jQuery: Chọn thuộc tính dữ liệu không trống?


95

Tôi đang cố gắng chọn tất cả các phần tử có data-go-tothuộc tính không trống.

Tôi đã thử $('[data-go-to!=""]')nhưng thật kỳ lạ, nó dường như đang chọn từng phần tử trên trang nếu tôi làm điều đó.

Câu trả lời:


76

thử

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

CẬP NHẬT:

Để không dẫn bất kỳ ai đi lạc đường, câu trả lời này sẽ hoạt động trong các phiên bản cũ hơn của jQuery nhưng không phù hợp với tương lai. Vì câu trả lời của @gmo và @ siva dường như đều hoạt động với các phiên bản sau nên tôi trì hoãn (và khuyến khích bạn ủng hộ) câu trả lời của họ .... và tất nhiên hy vọng bạn có một ngày tuyệt vời.


cảm ơn, điều này làm việc tuyệt vời! Tôi chỉ muốn chọn các phần tử hình ảnh, vì vậy tôi đã thêm $ (': not (img [data-go-to == ""]')
msanjay

2
Điều này không chọn tất cả các phần tử không có thuộc tính 'data-to-go' trống? Khi người hỏi muốn tất cả các phần tử có thuộc tính đó không bị trống? (như giải quyết câu trả lời Siva Charan của)
rodnaph

không thực sự cần bất kỳ dấu ngoặc kép hoặc là ... như trong $('element:not([attribute=])'); // gets all of <element attribute="">hay$(':not([attribute=])'); // gets all of <* attribute="">
Anthony Hatzopoulos

2
Điều này được mọi phần tử đối với tôi, bao gồm cả một trong đó có dữ liệu thuộc tính Tôi đang tìm
Advocate Devil

Dường như không hoạt động trong Safari nhưng $('[data-go-to!=""]:[data-go-to]')có.
Dan

183

Chỉ là tài liệu tham khảo thêm và cập nhật ( tháng năm'14) (tháng tám'15) (sep'16) (apr'17) (mar'18) (mar'19) ( tháng năm'20 ) ...
Câu trả lời phù hợp với:

Chuỗi trống:

Nếu phải tồn tại và có thể có bất kỳ giá trị nào (hoặc không có giá trị nào cả)attr

    jQuery("[href]");

Các thuộc tính bị thiếu:

Nếu có thể tồn tại & nếu tồn tại, phải có một số giá trị attr

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

Hoặc cả hai:

Nếu phải tồn tại & phải có một số giá trị ... attr

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

Tái bút : có thể kết hợp nhiều hơn ...


Kiểm tra thử nghiệm này trong jsFiddle để biết các ví dụ:


Hoặc ở đây trong SO với Đoạn mã này .

* Đoạn mã đang chạy jQuery v2.1.1


6
đây là nó. Ủng hộ người dùng này ngay tại đây. những câu trả lời cũ khác không phù hợp với tôi. Tôi đã sử dụng ví dụ thứ ba.
Valamas

Biệt phái @ Valamas-AUS
Adam Waite

Chỉnh sửa: Đã thêm Đoạn mã SO, vì vậy bạn có thể kiểm tra nó ngay tại đây.
gmo

Đây là cái đang hoạt động. $(':not([data-go-to=""])')không hoạt động nữa
Matthieu Charbonnier

1
Cảm ơn bạn đã cập nhật câu trả lời
Anthony C

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

6
Đây là một công trình cho các chuỗi rỗng và các thuộc tính thiếu, hoàn hảo
adamJLev

4
kể từ ngày 14 tháng 5 không hoạt động, Unrecognized Expressionbáo lỗi.
coding_idiot

7

Có 'tên thuộc tính dữ liệu' và giá trị của nó không trống:

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

Có 'data-thuộc tính tên' trống hoặc không:

$('[data-attributename]')

Ví dụ về JS Fiddle


1
Đây là câu trả lời duy nhất vẫn hoạt động đối với tôi vào tháng 6 năm 2015.
AlexioVay




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

Sử dụng :not, .not(), :emptyvv sẽ chỉ kiểm tra nếu các yếu tố chính nó là trống rỗng, không phải là thuộc tính dữ liệu. Đối với điều đó, bạn sẽ phải lọc dựa trên giá trị thuộc tính dữ liệu.

VĨ CẦM


1

Điều này phù hợp với tôi

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

Đây là hai lần lặp lại.
Jens


0

Điều này phù hợp với tôi:

$('.data .title td[data-field!=""]')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.