jQuery: Pilih atribut data yang tidak kosong?


Jawaban:


76

mencoba

$(':not([data-go-to=""])')

MEMPERBARUI:

Demi tidak menyesatkan siapa pun, jawaban ini akan berfungsi di versi jQuery yang lebih lama tetapi tidak tahan masa depan. Karena @gmo dan @ siva jawaban keduanya tampaknya berfungsi dengan versi yang lebih baru, saya menunda (dan mendorong Anda untuk memberi suara positif) jawaban mereka .... dan tentu saja semoga hari Anda menyenangkan.


terima kasih, ini bekerja dengan baik! Saya hanya ingin memilih elemen gambar, jadi saya menambahkan $ (': not (img [data-go-to == ""]')
msanjay

2
Apakah ini tidak memilih semua elemen yang tidak memiliki atribut 'data-to-go' kosong? Ketika penanya menginginkan semua elemen dengan atribut itu tidak kosong? (sebagai jawaban Siva Charan memutuskan)
rodnaph

tidak benar-benar membutuhkan tanda kutip ganda baik ... seperti $('element:not([attribute=])'); // gets all of <element attribute="">atau$(':not([attribute=])'); // gets all of <* attribute="">
Anthony Hatzopoulos

2
Ini mendapatkan setiap elemen untuk saya, termasuk yang memiliki atribut data yang saya cari
Pengacara Setan

Sepertinya tidak berfungsi di Safari tetapi berfungsi $('[data-go-to!=""]:[data-go-to]').
Dan

184

Hanya sebagai referensi lebih lanjut, dan up-to-date (may'14) (aug'15) (sep'16) (apr'17) (mar'18) (mar'19) ( may'20 ) ...
Jawaban yang sesuai dengan:

String kosong:

Jika harus ada & dapat memiliki nilai apa pun (atau tidak sama sekali)attr

    jQuery("[href]");

Atribut yang hilang:

Jika bisa ada & jika ada, pasti punya nilai attr

    jQuery("[href!='']");

Atau keduanya:

Jika harus ada & harus memiliki nilai ... attr

    jQuery("[href!=''][href]");

PS : lebih banyak kombinasi dimungkinkan ...


Periksa tes ini di jsFiddle untuk contoh:


Atau di sini, di SO dengan Cuplikan Kode ini .

* Snippet menjalankan jQuery v2.1.1


6
ini dia. Beri suara positif untuk pengguna ini di sini. jawaban lama lainnya tidak berhasil untuk saya. Saya menggunakan contoh ketiga.
Valamas

Seconded @ Valamas-AUS
Adam Waite

Edit: Menambahkan Cuplikan Kode SO, sehingga Anda dapat mengujinya di sini.
gmo

Ini adalah salah satu yang berhasil. $(':not([data-go-to=""])')tidak berfungsi lagi
Matthieu Charbonnier

1
Terima kasih telah menjaga jawabannya tetap terbaru
Anthony C

19
$('[data-go-to!=""]:[data-go-to]').each(function() {
    // Do Your Stuff
});​

6
Yang ini berfungsi untuk string kosong dan atribut yang hilang, sempurna
adamJLev

4
pada May'14 tidak berfungsi, memberikan Unrecognized Expressionkesalahan.
coding_idiot

7

Memiliki 'data-atributename' dan nilainya tidak kosong:

$('[data-attributename]:not([data-attributename=""])')

Memiliki 'data-atributename' kosong atau tidak:

$('[data-attributename]')

Contoh JS Fiddle


1
Ini adalah satu-satunya jawaban yang masih berfungsi untuk saya di bulan Juni 2015.
AlexioVay




2
$('[data-go-to]').filter(function() {
    return $(this).data('go-to')!="";
});

Menggunakan :not, .not(), :emptydll hanya akan memeriksa apakah unsur itu sendiri kosong, tidak atribut data. Untuk itu Anda harus memfilter berdasarkan nilai atribut data.

BIOLA


1

Ini berhasil untuk saya

$('[attributename]').filter('[attributename!=""]')

Ini adalah dua iterasi.
Jens


0

Ini bekerja untuk saya:

$('.data .title td[data-field!=""]')
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.