Сжатие двух дочерних () вызовов в один - PullRequest
0 голосов
/ 16 мая 2011

Как мне повернуть это, который использует два вызова два children:

$('#id tr').children('td').children('input')

во что-то, что вызывает детей только один раз? Я пытаюсь выбрать каждое текстовое поле ввода внутри определенной строки таблицы (tr), которая является дочерней по отношению к #id. Я пробовал

$('#id tr').children('td input')

и

$('#id tr').children('td > input')

Но ни одна из этих работ не работает. Я вроде как новичок в этих выражениях селектора, так что извините, если это очевидно.

Ответы [ 4 ]

6 голосов
/ 16 мая 2011

Хотя мне нравятся предложения $("#id tr td input"), в некоторых случаях (например, если у вас был объект $("#id tr") из какого-то другого источника), вы могли бы вместо этого искать .find(), который проходит несколько уровней глубокий (вместо .children(), который идет только один):

$("#id tr").find("td input")
3 голосов
/ 16 мая 2011

Почему не просто $('#id tr input')?

Или, может быть, $('#id input')

1 голос
/ 16 мая 2011

Я удивлен, что никто не предложил это:

$('td input', '#idc tr')

, что позволит вам получить часть #idc tr из переменной.По сути, вы делаете конкатенацию;поэтому сначала вы читаете правый селектор, а затем левый, например:

$('> input', 'div')

Это эквивалентно:

$('div > input')

Теперь давайте поиграем в гольф здесь;способ передачи селектора может быть упрощен до следующих двух форм:

$('input', '#idc td')
// vs
$('#id').find('td input')

Обе в основном делают то же самое, однако, как вы могли заметить, вторая позволяет вам создавать цепочку jquery;используя .end(), чтобы вернуться к предыдущему селектору #id.

Обычно я использую первое выражение, когда мне нужно сделать что-то простое, не требующее возврата к предыдущему селектору.

0 голосов
/ 16 мая 2011

U может установить класс для ваших входов и выбрать его

$('#id tr').children('td:input').hasclass('class name')

...