jQuery选择器链接

时间:2011-05-17 00:27:44

标签: jquery checkbox css-selectors

我们在尝试将选择器链接在一起时遇到了问题。我们试图获取所有已选中的复选框,并将data-action属性与hideplan作为值。我有一个页面有两个复选框,一个按钮和这个javascript:

<script type="text/javascript">
    var hiddenplans = $('input:checkbox[data-action="hideplan":checked');
    $("#hide_btn").click(function() {
        hiddenplans.each(

        function(index) {
            alert('checked' + index);
        });
    });​ 
</script>

当选择一个或多个复选框时,这不显示任何警报 - hiddenplans为空。但是,如果我们复制$('input:checkbox[data-action="hideplan":checked');并将其放入firebug控制台并运行它,我们将在选择一个或多个复选框时获得结果。如果我删除:选中它将警告data-action = hideplan的复选框。

我们尝试了几种不同的编写选择器的方法(例如$("input[type=checkbox][data-action=hideplan]:checked")$("input[type=checkbox][data-action=hideplan]").filter(":checked");等),它们在控制台中工作,但不会返回警报。

我已经创建了一个包含完整代码的小提琴,以防我们错过了一些明显的http://jsfiddle.net/xCnSs/5/

3 个答案:

答案 0 :(得分:3)

试试这个......

$('input:checkbox[data-action="hideplan"]:checked')

jsFiddle

答案 1 :(得分:1)

您正在缓存变量中的选定集,因此它只会返回页面加载时检查的项目。将此选择器移动到您的单击功能中它将起作用:

$("#hide_btn").click(function () {
    var hiddenplans = $("input[type=checkbox][data-action=hideplan]:checked");
    hiddenplans.each(function (index) {
        alert('checked' + index);
    });
});

http://jsfiddle.net/xCnSs/6/

答案 2 :(得分:0)

你忘记了结束括号:

$('input:checkbox[data-action="hideplan"]:checked');

但请记住,您也可以过滤结果:

$('input:checkbox[data-action="hideplan"]').filter(':checked');