Ich versuche, alle Elemente auszuwählen, deren Attribut data-go-to
Nicht leer ist.
Ich habe $('[data-go-to!=""]')
ausprobiert, aber seltsamerweise scheint es, dass jedes einzelne Element auf der Seite ausgewählt wird, wenn ich das tue.
versuchen
$(':not([data-go-to=""])')
AKTUALISIEREN:
Um niemanden in die Irre zu führen, funktioniert diese Antwort in älteren Versionen von jQuery, ist aber nicht zukunftssicher. Da die Antworten von @gmo und @siva beide mit späteren Versionen zu funktionieren scheinen, schiebe ich ihre Antworten auf (und ermutige Sie, sie zu verbessern) .... und hoffe natürlich, dass Sie einen fantastischen Tag haben.
Nur als weitere Referenz und eine aktuelle (14. Mai)(15. August)(16. September)(17. April) ( mar'18 ) ...
Antwort, die funktioniert mit:
Leere Zeichenfolgen:
Wenn das
attr
muss vorhanden & könnte einen beliebigen Wert haben (oder gar keine)
jQuery("[href]");
Fehlende Attribute:
Wenn
attr
könnte exist & if exist, muss einen Wert haben
jQuery("[href!='']");
Oder beides:
If
attr
muss exist & muss einen Wert haben ...
jQuery("[href!=''][href]");
[~ # ~] ps [~ # ~] : more Kombinationen sind möglich ...
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 Letzte in jsFiddle verfügbare jQuery-Version am 29. Mai 18 jQuery Edge ->
jsFiddle online test jQuery Edge-Version (mit Vorsicht verwenden) * Snippet führt jQuery v2.1.1 aus
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
});
Ich bin mir bei einem einfachen Selektor nicht sicher, aber Sie könnten filter()
verwenden:
$('[data-go-to]').filter(
function(){
return ($(this).attr('data-go-to').length > 0);
});
Verweise:
filter()
.Hat 'data-attributename' und sein Wert ist nicht leer:
$('[data-attributename]:not([data-attributename=""])')
Hat 'data-attributename' leer oder nicht:
$('[data-attributename]')
$('[data-go-to]:not([data-go-to=""])')
$('[data-go-to]').filter(function() {
return $(this).data('go-to')!="";
});
Mit :not
, .not()
, :empty
Etc wird nur geprüft, ob das Element selbst leer ist, nicht das Datenattribut. Dazu müssen Sie basierend auf dem Wert der Datenattribute filtern.
Das funktioniert bei mir
$('[attributename]').filter('[attributename!=""]')
Versuche dies :
$('[data-go-to:not(:empty)]')
Das funktioniert bei mir:
$('.data .title td[data-field!=""]')