在Mootools中,我只运行if ($('target')) { ... }。jQuery中的if ($('#target')) { ... }工作方式相同吗?
if ($('target')) { ... }
if ($('#target')) { ... }
no, jquery总是返回一个jquery对象,不管选择器是否匹配。 你需要使用.length
if ( $('#someDiv').length ){ }
正如其他评论者所建议的,最有效的方法似乎是:
if ($(selector).length ) { // Do something }
如果你绝对必须有一个exists()函数-这会比较慢-你可以这样做:
jQuery.fn.exists = function(){return this.length>0;}
然后在代码中使用
if ($(selector).exists()) { // Do something }
As answered 在这里
另外:
if( jQuery('#elem').get(0) ) {}
如果你使用:
jQuery.fn.exists = function(){return ($(this).length > 0);} if ($(selector).exists()) { }
你可能会暗示链条是可能的,但实际上不是。
这样会更好
jQuery.exists = function(selector) {return ($(selector).length > 0);} if ($.exists(selector)) { }
if ($('#elem')[0]) { // do stuff }
还有另一种方式:
$('#elem').each(function(){ // do stuff });
对我来说,.exists不起作用,所以我使用索引:
.exists
if ($("#elem").index() ! = -1) {}
我想这里回答的大多数人都不太理解这个问题,否则我可能会弄错。
问题是“如何检查jQuery中是否存在选择器。”
大多数人认为这是“如何使用jQuery检查DOM中是否存在元素”。几乎可以互换。
jQuery允许你创建自定义选择器,但是当你在初始化e之前尝试使用它时会发生什么;
$(':YEAH'); "Syntax error, unrecognized expression: YEAH"
在遇到这种情况后,我意识到这只是一个简单的检查问题
if ($.expr[':']['YEAH']) { // Query for your :YEAH selector with ease of mind. }
欢呼。
我更喜欢
if (jQuery("#anyElement").is("*")){...}
首先创建一个函数:
$.fn.is_exists = function(){ return document.getElementById(selector) }
然后
if($(selector).is_exists()){ ... }
jQuery.fn.exists = function(selector, callback) { var $this = $(this); $this.each(function() { callback.call(this, ($(this).find(selector).length > 0)); }); };