Подтвердить что ты не робот

JQuery label 'for' селектор атрибутов

Я использую Remy Sharp labelover plugin для jQuery, и я хотел бы исключить метку с атрибутом for и значением nature.

Здесь приведен пример кода:

$(document).ready(function() {
    $('form.default label').labelOver('over');
});

и что я пытаюсь сделать:

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

Может ли кто-нибудь увидеть, где я ошибаюсь? Чувствую, что я очень близок к тому, что мне нужно делать.

4b9b3361

Ответ 1

attr не является селектором, это функция, которая получает значение атрибута с именем атрибута в качестве 1-го аргумента или устанавливает его с новым значением, если он передается как аргумент 2ng.

Кроме того, вы исключили метки после их выбора при вызове not, потому что селектор label соответствовал всем меткам и attr, как я уже сказал, не отфильтровывал это.

Чтобы выбрать на основе атрибута, используйте это:

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

Как вы могли догадаться, [attribute='value'] - это селектор для атрибута "equal" для некоторого значения, а [attribute!='value'] - это "не равная" версия.

Для справки см.:
http://api.jquery.com/attribute-not-equal-selector/

Для справки о всех селекторах:
http://api.jquery.com/category/selectors/

Это также ссылается на мой сайт JavaScript и Web Dev Newsletter.

Ответ 2

.attr('for', 'nature') устанавливает для атрибута for значение nature

Чтобы фильтровать по атрибутам, используйте [attribute="value"]:

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