jQuery标签'for'属性选择器

时间:2011-08-06 14:25:28

标签: javascript jquery jquery-plugins jquery-selectors

我正在使用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');
});

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

3 个答案:

答案 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');