несколько селекторов не работают с контекстом - PullRequest
1 голос
/ 13 сентября 2011

Я пытаюсь выбрать некоторые элементы формы, когда фокусируюсь, и с этим:

$('textarea, input, select', '.highlightRow').live('focusin', function(e){ $(this).css("background-color","yellow"); });

но что-то не так с несколькими селекторами и контекстом

когда я использую контекст и форму, у меня нет .highlightRow моя текстовая область не меняет bgcolor (это нормально), но следующие элементы в списке (ввод, выбор) меняют bgcolor (это неправильно)

пример: http://jsfiddle.net/RgEAw/1/

теперь только менее элегантное решение работает нормально:

$('.highlightRow input, .highlightRow .highlightRow select, .highlightRow textarea')...

есть ли возможность использовать этот множественный селектор и контекст в этой ситуации?

1 Ответ

4 голосов
/ 13 сентября 2011

Согласно документу jQuery контекст должен быть «элементом DOM, документом или jQuery». Сам по себе он не может быть селектором строк.

Итак, когда вы укажете это:

$('textarea, input, select', '.highlightRow')

вы, очевидно, пытаетесь указать контекст '.highlightRow', который не является одним из документированных способов указания контекста. В этом конкретном случае вы можете либо получить один элемент DOM для '.highlightRow', превратить его в объект jQuery или поместить в фактический селектор.

Но контекст будет работать ТОЛЬКО если объект, который вы передаете, действительно существует. Если он не существует, то вы как бы пропускаете NULL-контекст, который означает поиск по всему документу, чтобы он не делал то, что вы хотите. Таким образом, вы можете использовать контекстный параметр в селекторе, только когда он действительно существует.

Я бы предложил использовать это:

$('.highlightRow textarea, .highlightRow input, .highlightRow select')

Рабочая демонстрация здесь: http://jsfiddle.net/jfriend00/uzYuQ/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...