新jQuery选择器

新jQuery选择器,jquery,Jquery,在(可能是您)StackOverflow的帮助下,我最近编写了以下选择器 $(':submit[name="Delete"][value="Delete"]').click(function() { return window.confirm(this.title || 'Delete this record?'); }); 问:现在1.4已经发布,有没有更优雅的方法来编写选择器?jQuery 1.4没有新的选择器来更改该表达式 我强烈建议您为有问题的元素提供一个ID(如果有一个)或一个类(如

在(可能是您)StackOverflow的帮助下,我最近编写了以下选择器

$(':submit[name="Delete"][value="Delete"]').click(function() {
return window.confirm(this.title || 'Delete this record?');
});

问:现在1.4已经发布,有没有更优雅的方法来编写选择器?

jQuery 1.4没有新的选择器来更改该表达式


我强烈建议您为有问题的元素提供一个ID(如果有一个)或一个类(如果有几个),因为它们比属性选择器快得多。

不,没有新的选择器,但是如果您发现自己做了很多类似的事情,您可以创建自己的选择器。这里有一个用途有限的:

$.expr[':'].delete_button = function(el) { 
    return $(el).is(':submit') && el.name === 'Delete' && el.value === 'Delete';
};
然后,您可以将行更改为:

$('input:delete_button').click(function() {
    return window.confirm(this.title || 'Delete this record?');
});
下面是一个更实用的函数,它任意匹配字符串:

$.expr[':'].btn = function(el, i, parts) { 
    return $(el).is(':submit') && el.name === parts[3] && el.value === parts[3];
};
可以这样称呼:

$('input:btn(Delete)').click(function() {
    return window.confirm(this.title || 'Delete this record?');
});
但是,如果您对其他按钮使用相同的命名结构,也会起作用:

$('input:btn(Save)').click(function() {
    return window.confirm(this.title || 'Save this record?');
});

+很好的信息。为什么要等到Resig来拯救我们自己能做到的那一天呢!?:)