2012-03-06 49 views
1

我需要一個對象是否存在其選擇頁面上的布爾值。檢查其選擇存在的對象,返回與jQuery或Javascript

這通常會做到這一點:

startpageentry = $('#' + startpageid)

但是,這並不返回任何東西。我需要一個布爾值,我可以放入,如果這樣的語句:

如果{}

我怎樣才能做到這一點(startpageentry =「假」!)?

+0

請參見http://計算器。 com/questions/299802 /你怎麼做檢查,如果一個選擇器存在於jquery – 2012-03-06 07:41:38

+0

是'假'是一個錯字?你應該比較假,而不是'假'。或者,如果你知道它是一個布爾值,你應該比較!== false。 (或者只是!startpageentry) – Corbin 2012-03-06 07:44:53

回答

3

有針對,因爲它會阻止鏈接的布爾值。
您可以使用$(something).length>0
但是如果你需要在一遍又一遍地跑,我做了一個小的jQuery插件被稱爲doesExist()

/* doesExist PLUGIN (c) MS */ 
/* (c) Michael Stadler(MS), */ 
(function($){ 
$.fn.doesExist = function() 
{ 
return jQuery(this).length > 0; 
}; 
})(jQuery); 

它的用法是

if($('#something').doesExist()){ 
     //doesExist returns a boolean 
} 
3

使用length

var startpageentry = $('#' + startpageid).length; 

要保存布爾結果,使用:

var isPresent = $('#' + startpageid).length > 0; 

現在,如果它存在false否則isPresent將是真實的。

或者乾脆:

if ($('#' + startpageid).length){ 
    // exists 
} 
else { 
    // does not exist 
} 
2

取得布林與jQuery ...

var startpageentry = !! $('#' + startpageid).length; 

沒有jQuery的...

var startpageentry = !! document.getElementById(startpageid); 

當然,你不真的需要一個布爾值來測試它。你可以只依靠0falsey(對於jQuery版本)或nullfalsey(對於非jQuery版本)。

此外,您但這並不返回任何是不正確的。它會返回對返回的jQuery對象的引用。 JavaScript中的對象始終是truthy,因此,在條件中測試它並不會告訴您選擇器是否匹配任何元素。

+0

'$( '#' + startpageid)。長度> 0'也會做同樣的事情,沒有必要使用該運營商 – Sarfraz 2012-03-06 07:44:10

+0

@Sarfraz是'!'一個頑皮的運營商? – alex 2012-03-06 07:45:47

+0

它強制/強制將表達式轉換爲布爾值,特別是在可以避免使用時,使用起來很貴 – Sarfraz 2012-03-06 07:52:20