Как получить список предметов, имеющих определенный подпункт? - PullRequest
0 голосов
/ 23 августа 2011

У меня есть таблица, где каждая строка начинается с «флажка», я хотел бы получить все TR, который содержит флажок, и это проверка.

Примерно так:

$('#' + tableId + ' > tbody > tr:contains(td > input[type=checkbox]:checked').each(function (i, item) {

        alert('delete ' + $(item).data('row-id'));

    });

Этот код не работает, он застревает. Вероятно, потому что селектор «содержит» только для текста. Как я мог это сделать?

С уважением.

Ответы [ 3 ]

2 голосов
/ 23 августа 2011

Используйте jQuery's имеет :

$('#' + tableId + ' > tbody > tr:has(td > input[type=checkbox]:checked)').each(function (i, item) {

  alert('delete ' + $(item).data('row-id'));

});

Для повышения производительности (см. Документацию по jQuery API) используйте это:

$('#' + tableId + ' > tbody > tr')
.filter(':has(td > input:checkbox:checked)').each(function (i, item) {

  alert('delete ' + $(item).data('row-id'));

});

Поскольку запрос has нельзя выполнить через querySelectorAll(), нет необходимости использовать [type=checkbox].

0 голосов
/ 23 августа 2011

Вы можете просто установить флажки и найти их ближайшие tr:

$('#' + tableId + ' > tbody > tr > td > input[type=checkbox]:checked').closest("tr")

Обратите внимание, вам также не хватает ), чтобы закрыть contains.

0 голосов
/ 23 августа 2011

Вам не нужно :contains селектор.

Если вы хотите, чтобы оно было где-то внутри <tr> (даже внутри вложенных элементов)

$('#' + tableId + ' > tbody > tr td > input[type=checkbox]:checked').each(function (i, item) {

Если вы хотите это прямо внутри него

$('#' + tableId + ' > tbody > tr > td > input[type=checkbox]:checked').each(function (i, item) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...