Javascript 无法使用jquery从另一个页面计数复选框
我有多套复选框。我想计算一组特定的复选框。这些复选框具有类Javascript 无法使用jquery从另一个页面计数复选框,javascript,php,jquery,checkbox,Javascript,Php,Jquery,Checkbox,我有多套复选框。我想计算一组特定的复选框。这些复选框具有类sub。有趣的是,它们是通过ajax调用从另一个php页面获取的。所以柜台坏了 <script> $("[id^=sub][type=checkbox]").change(function () { $('#count').text($("[id^=sub][type=checkbox]").length); }); </script> 这是获取的复选框的结构: <input type="check
sub
。有趣的是,它们是通过ajax调用从另一个php页面获取的。所以柜台坏了
<script>
$("[id^=sub][type=checkbox]").change(function () {
$('#count').text($("[id^=sub][type=checkbox]").length);
});
</script>
这是获取的复选框的结构:
<input type="checkbox" class="sub" name="sub['.$subjects_id.']" id="sub" value="">
我在html页面中显示计数,如下所示:
<p id="count"></p>
将更改事件处理程序绑定到子复选框时,它们不存在,因此jQuery对象不表示任何元素。也就是说,$(“[id^=sub][type=checkbox]”
在调用它时与任何元素都不匹配
您有两种选择,在ajax调用创建复选框后绑定事件处理程序,或者使用事件委派。通过事件委派,可以将处理程序绑定到祖先元素,但指定仅当与选择器匹配的元素发生更改时才调用它。有关事件委派的更多信息,请参见jQuery函数文档
它可以简单到:
$(document).on('change', '[id^=sub][type=checkbox]', function () {
$('#count').text($('[id^=sub][type=checkbox]:checked').length);
});
但是为了提高效率,您应该尝试使用比文档
元素更接近的祖先。越接近越好,但它必须是所有子复选框的祖先,并且在执行此代码时它必须存在
根据为子复选框显示的html,还可以使用以下选择器:
$(document).on('change', ':checkbox.sub', function () {
$('#count').text($(':checkbox.sub:checked').length);
});
“那么计数器不工作了”这是什么意思?是不是
0
?是否未定义
?它是否为空?是不是应该是41
?它是否抛出类型错误
?它完全不起作用吗?请详细解释。另外,我在代码中没有看到任何AJAX调用。@Xufox这意味着它没有显示任何计数!那么,您可以在控制台输出中看到这是一个错误吗?在这里,事件委派是一个非常优雅的解决方案。在只有一个事件侦听器的情况下,不需要数百个事件侦听器。@John S,我尝试了您的精确代码,但仍然没有显示计数。我试着用$('td')来代替您要求选择最近祖先的文档,但仍然没有显示计数@甜心-先试试文档。@JohnS,我还是这么做了not@sweety-我只能想象您的选择器与复选框不匹配。您可以发布问题中复选框的实际html。您也可以尝试以下选择器::checkbox.sub
。
$(document).on('change', ':checkbox.sub', function () {
$('#count').text($(':checkbox.sub:checked').length);
});