jQuery标签'for'属性选择器

Posted

技术标签:

【中文标题】jQuery标签\'for\'属性选择器【英文标题】:jQuery label 'for' attribute selectorjQuery标签'for'属性选择器 【发布时间】:2011-10-21 12:00:18 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

此外,您在使用 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 也有引用。

【讨论】:

【参考方案2】:

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

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

$('form.default label').not('[for="nature"]').labelOver('over')

【讨论】:

【参考方案3】:

工作代码:http://jsfiddle.net/3nQbr/1/

$('label').not('[for="nature"]').labelOver('over');

【讨论】:

以上是关于jQuery标签'for'属性选择器的主要内容,如果未能解决你的问题,请参考以下文章

JQuery选择器

jQuery easyUI id选择器 类选择器 标签选择器 属性选择器 及DOM对象和jQuery相互之间的转换

选项标签值属性的 jQuery 选择器返回 null

04-属性选择器

jQuery — 选择器

04-属性选择器