我们在尝试将选择器链接在一起时遇到了问题。我们试图获取所有已选中的复选框,并将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/
答案 0 :(得分:3)
答案 1 :(得分:1)
您正在缓存变量中的选定集,因此它只会返回页面加载时检查的项目。将此选择器移动到您的单击功能中它将起作用:
$("#hide_btn").click(function () {
var hiddenplans = $("input[type=checkbox][data-action=hideplan]:checked");
hiddenplans.each(function (index) {
alert('checked' + index);
});
});
答案 2 :(得分:0)
你忘记了结束括号:
$('input:checkbox[data-action="hideplan"]:checked');
但请记住,您也可以过滤结果:
$('input:checkbox[data-action="hideplan"]').filter(':checked');