您如何检查选择器是否匹配jQuery中的某些内容?[重复]

2020/09/26 03:41 · javascript ·  · 0评论

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

正如其他评论者所建议的那样,最有效的方法似乎是:

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

如果您绝对必须具有一个exist()函数-这会变慢-您可以执行以下操作:

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

然后,您可以在代码中使用

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

这里回答

否,无论选择器是否匹配,jquery总是返回一个jquery对象。您需要使用.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)) { }

我认为大多数在这里回答的人都不太了解这个问题,否则我可能会误会。

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

大多数人将其视为“如何使用jQuery检查元素是否存在于DOM中”。很难互换。

jQuery允许您创建自定义选择器,但是在这里看到在初始化之前尝试在e上使用会发生什么?

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

遇到这个问题后,我意识到这只是检查问题

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

干杯。

另一种方式:

$('#elem').each(function(){
  // do stuff
});
if ($('#elem')[0]) {
  // do stuff
}

或者:

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

我更喜欢

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

基本上检查此元素是否为“ *”(任何元素)。语法更简洁,“ if”中的“ 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) {}

首先创建一个函数:

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

然后

if($(selector).is_exists()){ ... }
本文地址:http://javascript.askforanswer.com/ninruhejianchaxuanzeqishifoupipeijqueryzhongdemouxieneirongzhongfu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!