Próbuję wybrać wszystkie elementy, które mają data-go-to
atrybut, który nie jest pusty.
Próbowałem, $('[data-go-to!=""]')
ale, co dziwne, wydaje się, że wybiera każdy element na stronie, jeśli to zrobię.
Próbuję wybrać wszystkie elementy, które mają data-go-to
atrybut, który nie jest pusty.
Próbowałem, $('[data-go-to!=""]')
ale, co dziwne, wydaje się, że wybiera każdy element na stronie, jeśli to zrobię.
próbować
$(':not([data-go-to=""])')
AKTUALIZACJA:
Aby nikogo nie sprowadzić na manowce, ta odpowiedź będzie działać w starszych wersjach jQuery, ale nie jest przyszłościowa. Ponieważ odpowiedzi @gmo i @ siva wydają się działać z późniejszymi wersjami, odkładam (i zachęcam cię do głosowania) ich odpowiedzi ... i oczywiście mam nadzieję, że masz fantastyczny dzień.
$('element:not([attribute=])'); // gets all of <element attribute="">
lub$(':not([attribute=])'); // gets all of <* attribute="">
$('[data-go-to!=""]:[data-go-to]')
tak.Jako dalsze odniesienie i aktualne
(maj'14)(sierpień'15)(wrz'16)(kwi'17)(mar'18)(mar'19)( maj'20 ) ...Odpowiedź, która działa z:
jQuery("[href]");
jQuery("[href!='']");
jQuery("[href!=''][href]");
PS : więcej kombinacji jest możliwych ...
Sprawdź ten test w jsFiddle, aby zobaczyć przykłady:
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 testjQuery v3.4.1 ->
jsFiddle online test Ostatnia wersja jQuery dostępna w jsFiddle w maju 28'20jQuery Edge ->
jsFiddle online test Wersja jQuery Edge (używaj ostrożnie)Lub tutaj w SO z tym fragmentem kodu .
* Snippet korzysta z jQuery v2.1.1
Pokaż fragment kodu
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>
źródło
$(':not([data-go-to=""])')
już nie działa$('[data-go-to!=""]:[data-go-to]').each(function() { // Do Your Stuff });
źródło
Unrecognized Expression
błąd.Zawiera atrybut „data-attributeame”, a jego wartość nie jest pusta:
$('[data-attributename]:not([data-attributename=""])')
Czy atrybut „nazwa-atrybutu danych” jest pusty lub nie:
$('[data-attributename]')
Przykład JS Fiddle
źródło
Nie jestem pewien co do prostego selektora, ale możesz użyć
filter()
:$('[data-go-to]').filter( function(){ return ($(this).attr('data-go-to').length > 0); });
Demo JS Fiddle .
Bibliografia:
filter()
.źródło
Zgodnie z dokumentacją powinno to wystarczyć
:not([attr="value"])
PRÓBNY
Mam nadzieję że to pomoże
źródło
$('[data-go-to]:not([data-go-to=""])')
JSBIN
źródło
$('[data-go-to]').filter(function() { return $(this).data('go-to')!=""; });
Korzystanie z
:not
,.not()
,:empty
etc będzie sprawdzać tylko wtedy, gdy sam element jest pusty, nie atrybut danych. W tym celu będziesz musiał filtrować na podstawie wartości atrybutów danych.SKRZYPCE
źródło
To działa dla mnie
$('[attributename]').filter('[attributename!=""]')
źródło
Spróbuj tego :
$('[data-go-to:not(:empty)]')
źródło
"Syntax error, unrecognized expression: [data-go-to:not(:empty)]"
To działa dla mnie:
$('.data .title td[data-field!=""]')
źródło