Как обобщить селектор jQuery? - PullRequest
1 голос
/ 02 марта 2012

Я использую некоторые jQuery для выделения полей формы.Но подсвечивается не само поле ввода, а его родитель.И я хочу указать этих родителей.

Здесь родитель - это div, и он отлично работает

$("div input").focus(function () {
        $(this).parent().addClass("focus");
});

Но я хочу также указать родителя "td"

$("div,td  input").focus(function () {
        $(this).parent().addClass("focus");
});

Но это не работает.Только поля td получают атрибут focus!Есть идеи, как с этим справиться?

Ответы [ 8 ]

4 голосов
/ 02 марта 2012

Запятая полностью разделит два селектора;вам нужно указать input дважды:

$('div input, td input').focus(function() {
    $(this).parent().addClass("focus");
});

В качестве альтернативы, если у вас мало <input> с, которые не соответствуют этому критерию, вы можете сделать этонемного аккуратнее:

$('input').focus(function() {
    $(this).parent('div, td').addClass('focus');
});
1 голос
/ 02 марта 2012

Я думаю, проблема в том, что вы выбираете div И td input вместо div input И td input. Запятая используется как разделитель селекторов.

Вы можете использовать следующее, если у вас нет других полей input:

$("input")

или если вам нужно ограничиться div и td, тогда:

$("div input, td input");
1 голос
/ 02 марта 2012

http://api.jquery.com/multiple-selector/

$('td input, div input').focus(function () {
    $(this).parent().addClass("focus");
});
1 голос
/ 02 марта 2012

Возможно, вам следует использовать дочерний селектор:

$("div > input, td > input")
.focus(function () {
  $(this).parent().addClass("focus");
})
.blur(function () {
  $(this).parent().removeClass("focus");
});
1 голос
/ 02 марта 2012

Если вы нацелены на все родительские поля ввода, то вы можете сделать что-то вроде этого: -

$('input').focus(function () {
        $(this).parent().addClass('focus');
});
1 голос
/ 02 марта 2012

Вы должны помнить, что с , вы создаете совершенно новый селектор!

Вы ищете

    $('div input, td input').focus(function() {
       $(this).parent().addClass("focus");
});
0 голосов
/ 02 марта 2012
$('td input').add().parent().doSOmething()
0 голосов
/ 02 марта 2012
$('input').parent('td').addClass('focus');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...