我正在使用Remy Sharp的labelover plugin for jQuery,我想排除属性为for
且值为nature
的标签。
以下是代码工作的示例:
$(document).ready(function() {
$('form.default label').labelOver('over');
});
以及我正在尝试做的事情:
$(document).ready(function() {
$('form.default label').not($('label').attr('for','nature')).labelOver('over');
});
谁能看到我哪里出错了?感觉就像我非常接近我需要做的事情。
答案 0 :(得分:26)
attr
不是选择器,它是一个函数,它将属性值作为第一个参数获取属性值,或者如果将一个值作为2ng参数传递,则将其设置为新值。
此外,您在使用not
电话选择标签后排除了标签,因为选择器label
与所有标签相匹配,而attr
正如我所说的那样没有过滤。
要根据属性进行选择,请使用:
$(document).ready(function() {
$("form.default label[for!='nature']").labelOver('over');
});
正如您可能已经猜到的那样,[attribute='value']
是属性“等于”某个值的选择器,而[attribute!='value']
是它的“不相等”版本。
供参考,参见:
http://api.jquery.com/attribute-not-equal-selector/
供所有选择人参考:
http://api.jquery.com/category/selectors/
我的JavaScript & Web Dev Newsletter site也提到了这一点。
答案 1 :(得分:2)
.attr('for', 'nature')
正在将for
属性的值设置为nature
要按属性过滤,请使用[attribute="value"]
:
$('form.default label').not('[for="nature"]').labelOver('over')
答案 2 :(得分:2)
工作代码:http://jsfiddle.net/3nQbr/1/
$('label').not('[for="nature"]').labelOver('over');