你如何检查select器是否匹配jQuery中的东西?

在Mootools中,我只是运行if ($('target')) { ... }if ($('#target')) { ... }在jQuery中是否以相同的方式工作?

正如其他评论者所说,最有效的方法似乎是:

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

如果你绝对必须有一个exists()函数 – 这会更慢 – 你可以这样做:

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

然后在你的代码中,你可以使用

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

在这里回答

不,jQuery总是返回一个jQuery对象,无论select器是否匹配。 你需要使用.length

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

如果你使用:

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

你会暗示链接是不可能的。

这会更好

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

另一种方式:

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

我想大部分在这里回覆的人都不太理解这个问题,否则我可能会误会。

问题是“如何检查select器是否存在于jQuery中”。

大多数人已经采取这个“如何检查一个元素是否存在于使用jQuery的DOM”。 几乎不可互换。

jQuery允许你创build自定义的select器,但是在这里可以看到当你在初始化之前尝试在e上使用时会发生什么;

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

碰到这个之后,我意识到这只是一个检查而已

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

干杯。

 if ($('#elem')[0]) { // do stuff } 

或者:

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

我更喜欢这个

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

基本上检查这个元素是否是一种“*”(任何元素)。 只是一个更清晰的语法和“是”更有意义的“如果”

 jQuery.fn.exists = function(selector, callback) { var $this = $(this); $this.each(function() { callback.call(this, ($(this).find(selector).length > 0)); }); }; 

对于我.exists ,存在不起作用,所以我使用索引:

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

首先创build一个函数:

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

然后

 if($(selector).is_exists()){ ... }