空ではない_data-go-to
_属性を持つすべての要素を選択しようとしています。
$('[data-go-to!=""]')
を試してみましたが、奇妙なことに、ページのすべての要素を選択しているようです。
試してみる
$(':not([data-go-to=""])')
更新:
誰もが迷わないようにするために、この答えはjQueryの古いバージョンで機能しますが、将来性はありません。 @gmoと@sivaの回答はどちらも後のバージョンで機能しているように見えるので、私はそれらの回答を延期し(そして、賛成することをお勧めします)....もちろん素晴らしい一日をお過ごしください。
さらに参照して、up-to-date (5月14日)(8月15日)(9月16日)(4月17日) (mar'18)...
以下と連携する回答:
空の文字列:
attr
must存在する&couldは任意の値を持つ(またはまったくなし)
jQuery("[href]");
欠落している属性:
If
attr
could存在&存在する場合、mustは何らかの値を持つ
jQuery("[href!='']");
または両方:
If
attr
must存在する&には何らかの値が必要です...
jQuery("[href!=''][href]");
[〜#〜] ps [〜#〜]:もっと組み合わせが可能です...
jQuery v1.11.0 ->
jsFiddle online testjQuery v2.1.0 ->
jsFiddle online testjQuery v2.1.3 ->
jsFiddle online testjQuery v3.0.0-alpha1 ->
jsFiddle online testjQuery v3.1.1 Slim ->
jsFiddle online testjQuery v3.2.1 ->
jsFiddle online testjQuery v3.3.1 ->
jsFiddle online test 最後のjQueryバージョンは、jsFiddleで5月29日18時に利用可能ですjQuery Edge ->
jsFiddle online test jQuery Edgeバージョン (注意して使用)*スニペットはjQuery v2.1.1を実行しています
jQuery('div.test_1 > a[href]').addClass('match');
jQuery('div.test_2 > a[href!=""]').addClass('match');
jQuery('div.test_3 > a[href!=""][href]').addClass('match');
div,a {
display: block;
color: #333;
margin: 5px;
padding: 5px;
border: 1px solid #333;
}
h4 {
margin: 0;
}
a {
width: 200px;
background: #ccc;
border-radius: 2px;
text-decoration: none;
}
a.match {
background-color: #16BB2A;
position: relative;
}
a.match:after {
content: 'Match!';
position: absolute;
left: 105%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test_1">
<h4>Test 1: jQuery('a[href]')</h4>
<a href="test">href: test</a>
<a href="#">href: #</a>
<a href="">href: empty</a>
<a>href: not present</a>
</div>
<div class="test_2">
<h4>Test 2: jQuery('a[href!=""]')</h4>
<a href="test">href: test</a>
<a href="#">href: #</a>
<a href="">href: empty</a>
<a>href: not present</a>
</div>
<div class="test_3">
<h4>Test 3: jQuery('a[href!=""][href]')</h4>
<a href="test">href: test</a>
<a href="#">href: #</a>
<a href="">href: empty</a>
<a>href: not present</a>
</div>
$('[data-go-to!=""]:[data-go-to]').each(function() {
// Do Your Stuff
});
単純なセレクターについてはわかりませんが、filter()
を使用できます。
_$('[data-go-to]').filter(
function(){
return ($(this).attr('data-go-to').length > 0);
});
_
参照:
filter()
。「data-attributename」があり、その値は空ではありません。
$('[data-attributename]:not([data-attributename=""])')
'data-attributename'が空かどうか:
$('[data-attributename]')
$('[data-go-to]:not([data-go-to=""])')
_$('[data-go-to]').filter(function() {
return $(this).data('go-to')!="";
});
_
_:not
_、.not()
、_:empty
_などを使用すると、データ属性ではなく、要素自体が空であるかどうかのみがチェックされます。そのためには、データ属性値に基づいてフィルタリングする必要があります。
これは私のために働く
$('[attributename]').filter('[attributename!=""]')
これを試して :
$('[data-go-to:not(:empty)]')
これは私のために働く:
$('.data .title td[data-field!=""]')