2008-11-18 30 views

回答

652

至於其他評論者使用所提出的建議最有效的方式做到這一點似乎是:

if ($(selector).length) { 
    // Do something 
} 

如果你絕對必須有一個exists()函數 - 這將slower-你可以這樣做:

jQuery.fn.exists = function(){return this.length>0;} 

然後在你的代碼,你可以使用

if ($(selector).exists()) { 
    // Do something 
} 

作爲回答here

+1

謝謝!在我的搜索中找不到那個,但這正是我需要的。 – 2008-11-18 19:30:39

+0

這個時候.length的長度是否完全相同? – redsquare 2010-05-27 03:19:43

+6

這是我見過的一些愚蠢的插件...... – 2010-05-27 04:26:54

74

不,jQuery總是返回一個jQuery對象,無論選擇器是否匹配。 您需要。長度

if ($('#someDiv').length){ 

} 
+0

這比接受的答案的第二個建議更實際。 (爲什麼你會引入一個更慢和更長的選擇來簡單地檢查長度!)。我也注意到你的答案是更早的+1 :) – 2015-09-15 13:31:11

3

或者:

if(jQuery('#elem').get(0)) {} 
19

,如果你使用:

jQuery.fn.exists = function(){return ($(this).length > 0);} 
if ($(selector).exists()) { } 

你將意味着鏈是可能時,它不是。

這將是更好的

jQuery.exists = function(selector) {return ($(selector).length > 0);} 
if ($.exists(selector)) { } 
13
if ($('#elem')[0]) { 
    // do stuff 
} 
15

還有一種方法:

$('#elem').each(function(){ 
    // do stuff 
}); 
-3

對我來說.exists不工作,所以我使用索引:

if ($("#elem").index() ! = -1) {} 
15

我想大多數人回答h我不太明白這個問題,否則我可能會誤解。

問題是「如何檢查jQuery中是否存在選擇器」。

大多數人都將此視爲「如何使用jQuery檢查DOM中是否存在元素」。幾乎不可互換。

jQuery允許您創建自定義選擇器,但在這裏看到當初始化它時嘗試在e上使用時會發生什麼;

$(':YEAH'); 
"Syntax error, unrecognized expression: YEAH" 

運行到這之後,我意識到這是簡單的檢查

if ($.expr[':']['YEAH']) { 
    // Query for your :YEAH selector with ease of mind. 
} 

乾杯的問題。

1

我喜歡

if (jQuery("#anyElement").is("*")){...} 

這基本上檢查,如果這個元素是一種「*」(任何元素)。 只是一個更清晰的語法和「是」,使內部的「如果」

-6

首先創建一個功能更多的意義:

$.fn.is_exists = function(){ return document.getElementById(selector) } 

然後

if($(selector).is_exists()){ ... } 
1
jQuery.fn.exists = function(selector, callback) { 
    var $this = $(this); 
    $this.each(function() { 
     callback.call(this, ($(this).find(selector).length > 0)); 
    }); 
}; 
相關問題