jQuery获取id以任何常量结尾的元素

时间:2012-03-15 12:40:57

标签: jquery jquery-selectors

我需要一个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]")

我没有正确使用“或”。任何人都可以帮助我吗?

提前致谢!

亚历。

3 个答案:

答案 0 :(得分:3)

你非常接近。将您的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]")

这是a working fiddle

答案 1 :(得分:2)

您的第一个示例查询是与正确语法最接近的查询,但是您正在使用$('... 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'); });

在上面的代码中,您将在面板中找到具有匹配ID的所有元素,并从匹配集中筛选出已选中复选框的元素。

如果您提供上下文,您也可以完全不需要使用.find

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

答案 2 :(得分:0)