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

时间:2013-07-11 08:57:05

标签: jquery jquery-selectors custom-selectors

我在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')。任何人都知道原因。

1 个答案:

答案 0 :(得分: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