jQuery для получения элементов, чей идентификатор заканчивается любой из множества констант - PullRequest
4 голосов
/ 15 марта 2012

Мне нужен jQuery, чтобы получить все отмеченные флажки, чей ID заканчивается на PR, PR_KD или PR_KDA. Я попробовал это без удачи:

jQuery("#" + panelInfo[0] + "_row_" + panelInfo[1] + " input:checked").find(":[id$=_chkPR], :[id$=_chkPR_KD], :[id$=_chkPR_KDA])");

, а также это:

jQuery("#" + panelInfo[0] + "_row_" + panelInfo[1] + " input:checked:[id$=_chkPR, id$=_chkPR_KD, id$=_chkPR_KDA]")

Я не могу правильно использовать "или". Кто-нибудь может мне помочь?

Заранее спасибо!

Alejandro.

Ответы [ 3 ]

3 голосов
/ 15 марта 2012

Ты очень близко.Измените find() на следующее:

.find(":checkbox:checked[id$=_chkPR], :checkbox:checked[id$=_chkPR_KD], :checkbox:checked[id$=_chkPR_KDA]")

Окончательный код:

jQuery("#" + panelInfo[0] + "_row_" + panelInfo[1]).find(":checkbox:checked[id$=_chkPR], :checkbox:checked[id$=_chkPR_KD], :checkbox:checked[id$=_chkPR_KDA]")

Вот рабочая скрипка .

2 голосов
/ 15 марта 2012

Ваш первый пример запроса наиболее близок к правильному синтаксису, но вы используете $('... input:checked').find(), который будет искать потомков этих флажков (которых, конечно, не будет).

Таким образом, вам нужно переместить часть input:checked или, что еще лучше, :checkbox:checked, чтобы исключить любые радиокнопки, в ваш .find, чтобы вы искали в нужном контейнере, а не в списке флажков :

jQuery("#" + panelInfo[0] + "_row_" + panelInfo[1])
    .find(":checkbox:checked[id$=_chkPR], :checkbox:checked[id$=_chkPR_KD], :checkbox:checked[id$=_chkPR_KDA])");

Другой способ выразить это может быть:

jQuery("#" + panelInfo[0] + "_row_" + panelInfo[1])
   .find('[id$=_chkPR], [id$=_chkPR_KD], [$=id_chkPR_KDA]')
   .filter(function() { return $(this).is(':checkbox:checked'); });

В приведенном выше коде вы находите все элементы на панели с совпадающим идентификатором и отфильтровывает элементы из соответствующего набора, которые отмечены флажками.

Вы также можете избавиться от необходимости вообще использовать .find, если вместо этого укажите context :

jQuery(":checkbox:checked[id$=_chkPR], :checkbox:checked[id$=_chkPR_KD], :checkbox:checked[id$=_chkPR_KDA])",
    document.getElementById(panelInfo[0] + "_row_" + panelInfo[1]));
0 голосов
/ 15 марта 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...