jQuery中数据的自定义选择器不起作用

Posted

技术标签:

【中文标题】jQuery中数据的自定义选择器不起作用【英文标题】:Custom selector for data in jQuery don't work 【发布时间】:2013-07-09 11:25:29 【问题描述】:

我在 DOM 中有设置了 data('disabled', true) 的元素,我想创建自定义选择器来选择这些元素。我试试这个:

jQuery.extend(jQuery.expr[':'],  
    disabled: function(a,i,m) 
        return $(a).data('disabled') === true;
    
);

还有这个:

jQuery.expr[':'].disabled = function(a,i,m) 
    return $(a).data('disabled') === true;
;

我也试试!!$(a).data('disabled');

但它不起作用,$('.parent :disabled') 什么也不返回,即使我在 .parent 中的元素有 data('disabled')。任何人都知道为什么。

【问题讨论】:

jquery 已经有一个选择器:disabled 【参考方案1】:

看起来是因为 jQuery 已经有一个名为 :disabled 的选择器,如果你重命名它就可以正常工作

jQuery(function($)
    jQuery.extend(jQuery.expr[':'],  
        disabled1: function(a,i,m) 
            console.log('x',arguments)
            return $(a).data('disabled') === true;
        
    );

    $('.parent :disabled1').hide()
)

演示:Fiddle

【讨论】:

以上是关于jQuery中数据的自定义选择器不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在codeigniter中使用jquery的日期选择器不起作用

Jquery $('class', this) 选择器不起作用

jQuery不是选择器不起作用

Jquery 多属性选择器不起作用

JQuery绑定('click')到多个选择器不起作用

jQuery 选择器,包括属性和同级选择器不起作用