Tôi đang làm việc để tạo ra một cách ngữ nghĩa hơn để kiểm tra các phần tử với jQuery. Sử dụng $("#element").length > 0
chỉ không thực sự cảm thấy rất tốt worded với tôi, vì vậy tôi khi bổ sung chọn của riêng tôi để sử dụng trong .is
:Trả về "True" trên Empty Selector Array rỗng?
if($("#element").is(":present")) {
console.log("It's aliiiveeee!!");
}
phần Đó là dễ dàng, như thế này:
$.extend($.expr[':'],{
present: function(a) {
return $(a).length > 0;
}
});
Tôi muốn tiến một bước xa hơn và giúp bạn dễ dàng biết phần tử không tồn tại hay không, sử dụng cú pháp tương tự:
$.extend($.expr[':'],{
present: function(a) {
return $(a).length > 0;
},
absent: function(a) {
return $(a).length === 0;
}
});
$(function() {
if($("#element").is(":absent")) {
console.log("He's dead, Jim.");
}
});
Nhưng phần này đáng ngạc nhiên là khó làm. Tôi nghĩ rằng đó là bởi vì tôi đang paring xuống các yếu tố trả về để có được một kết quả, và paring chọn để .length === 0 là giống như yêu cầu không có elelements: nó trả về false không có vấn đề gì.
Tôi đã thử rất nhiều cách khác nhau để đảo ngược mọi thứ và có được điều này để trở về đúng khi nguyên tố này không tồn tại, và false nếu nó:
return $(a).length === 0;
return !($(a).length > 0);
if(!($(a).length > 0)) {
return true;
}
if($(a).length > 0) {
return false;
} else {
return true;
}
return !!($(a).length === 0);
// etc...
Có một cách dễ dàng để có được điều này để chỉ trả về true nếu phần tử không tồn tại, và false nếu nó không?
Vì vậy, '.is' không thực sự được thiết kế để trả về true khi không có phần tử nào tồn tại trong tập hợp các bộ chọn phù hợp? Một tùy chọn khác mà tôi đã xem xét chỉ là sử dụng: 'if ($ (" # element "). (": Not (: present) ")) { console.log (" Cậu ấy đã chết, Jim. "); } ' Nhưng kỳ quặc, điều đó cũng không hoạt động. –
@Code Junkie: Một lần nữa, bạn không có bất kỳ phần tử nào để sử dụng '.is()' với, do đó hàm đó sẽ không được gọi. Không có vấn đề gì bạn chọn ném vào nó, không có gì sẽ xảy ra! – BoltClock
Vì vậy, không có cách nào để trả lại giá trị đúng trên kết quả bộ chọn trống? –