jQuery标签'for'属性选择器

Jim*_*yce 18 javascript jquery jquery-plugins jquery-selectors

我正在使用Remy Sharp的jQuery标签插件,我想排除带有属性for和值的标签nature.

以下是代码工作的示例:

$(document).ready(function() {
    $('form.default label').labelOver('over');
});
Run Code Online (Sandbox Code Playgroud)

而我正在努力做的事情:

$(document).ready(function() {
    $('form.default label').not($('label').attr('for','nature')).labelOver('over');
});
Run Code Online (Sandbox Code Playgroud)

谁能看到我哪里出错了?感觉就像我非常接近我需要做的事情.

Mel*_*igy 26

attr 不是选择器,它是一个函数,它使用属性名称作为第一个参数获取属性值,或者如果将一个值作为2ng参数传递,则将其设置为新值.

此外,您在通过not电话选择label标签后排除了标签,因为选择器与所有标签匹配,attr正如我所说,没有过滤掉标签.

要根据属性进行选择,请使用以下命令:

$(document).ready(function() {
    $("form.default label[for!='nature']").labelOver('over');
});
Run Code Online (Sandbox Code Playgroud)

正如您可能已经猜到的那样,[attribute='value']属性的选择器"等于"某个值,并且[attribute!='value']是它的"不相等"版本.

有关参考,请参阅:http:
//api.jquery.com/attribute-not-equal-selector/

有关所有选择器的参考:http:
//api.jquery.com/category/selectors/

这也在我的JavaScript和Web Dev Newsletter网站上引用.


mak*_*mak 3

.attr('for', 'nature')for将属性的值设置为nature

要按属性过滤,请使用[attribute="value"]

$('form.default label').not('[for="nature"]').labelOver('over')
Run Code Online (Sandbox Code Playgroud)