你如何检查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()){ ... }