2009-12-14 26 views
54

Tôi hiện làm điều này để kiểm tra xem một trong hai yếu tố tồn tại:Nếu một trong hai yếu tố tồn tại, làm điều gì đó

if ($(".element1").length > 0 || $(".element2").length > 0) { 
    //do stuff... 
} 

Có cách nào tốt hơn để viết lại giống nhau không? Ý tôi là, là .length giống như .length > 0?

+0

Bạn có thể tìm thấy điều này [câu hỏi] (http://stackoverflow.com/questions/31044/is-there- một tồn tại-chức năng-cho-jquery) trả lời câu hỏi của bạn. –

Trả lời

25
if ($('#myDiv')[0]) { //do something } 

..works tốt nhất!

Tìm thấy here.

48
if ($(".element1").is('*') || $(".element2").is('*')) { 
    // code 
} 

EDIT (mỗi bình luận) Chọn yếu tố bởi nhiều lớp trong một cuộc gọi:

if ($(".element1, .element2").is('*')) { 
    // code 
} 
+3

Lưu ý rằng bạn cũng có thể kết hợp hai bộ chọn vào một cái như sau: '$ (". Element1, .element2 ")'. – bcat

+5

Có phải ".is()" giống với ".length> 0" không? Whats sự khác biệt, nếu có? – 3zzy

+0

Nimbuz, bài đăng tốt về sử dụng .is() - http://www.bennadel.com/blog/1725-jQuery-s-is-Method-Checks-For-Any-Matching-Elements.htm – micahwittman

1

See Extremely updated version of this plugin here! Bây giờ sử dụng chức năng gọi lại để bạn có thể duy trì chainability nếu bạn chọn. hoàn toàn có thể thay thế lệnh if hoặc vẫn có thể được sử dụng trong lệnh if


Bạn có thể tạo rất đơn giản jQuery plug-in cho điều này, như vậy:

jsFiddle

(function($) { 
    if (!$.exist) { 
     $.extend({ 
      exist: function(elm) { 
       if (typeof elm == null) return false; 
       if (typeof elm != "object") elm = $(elm); 
       return elm.length ? true : false; 
      } 
     }); 
     $.fn.extend({ 
      exist: function() { 
       return $.exist($(this)); 
      } 
     }); 
    } 
})(jQuery); 

USE

// With ID 
$.exist("#eleID"); 
// OR 
$("#eleID").exist(); 

// With class name 
$.exist(".class-name"); 
// OR 
$(".class-name").exist(); 

// With just tag // prolly not best idea aS there will be other tags on site 
$.exist("div"); 
// OR 
$("div").exist(); 

Với tuyên bố Nếu bạn

if ($(".element1").exist() || $(".element2").exist()) { 
    ...stuff... 
} 

Tất nhiên plugin này có thể được mở rộng hơn nữa để được ưa thích nhiều hơn nữa (xử lý nhiều cuộc gọi cùng một lúc, tạo ra yếu tố không tồn tại dựa trên một pram), nhưng khi nó đứng ngay bây giờ, nó thực hiện một chức năng rất đơn giản, rất cần thiết ... Phần tử này có tồn tại không? trở True hoặc False

jsFiddle

2
!$.isEmptyObject($.find('#urId')) 

này sẽ trở về "true" nếu phần tử tồn tại và False nếu không

cổ vũ :)

1

Chỉ cần sử dụng .each().

$(".element1").each(function(){ 
    //Do Something here 
} 

đơn giản ...

1
$.fn.exists = function(ifExists) { 
    return this.length ? ifExists.call(this, this) : this; 
}; 

sử dụng:

$('.element1, .element2').exists(function(els) { 
    // this and els refers to $('.element1, .element2') 
}); 
Các vấn đề liên quan