2012-03-06 44 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