2

当复选框位于页面本身内时,下面的代码可以正常工作。从 jquery 加载相关内容时,.load它不会注册复选框。

下面的html代码显示在<div id='output'></div>. 当我将它移到该 div 之外时,它工作正常。

JS

$(document).ready(function() {
    $('#dropdown').change( function() {
        $('#output').load('/process.php',{dropdown: $(this).val()});
    });

    $(".checkbox").click(function(){
        $('#continue').prop('disabled',$('input.checkbox:checked').length == 0);
    });
});

process.php 的 HTML

<input type="checkbox" class="checkbox">
4

3 回答 3

4

您必须使用 on() 方法来说明通过 AJAX 添加到 DOM 的元素。尝试改变这个 -

$(".checkbox").click(function(){
    $('#continue').prop('disabled',$('input.checkbox:checked').length == 0);
});

对此——

 $('body').on('click', '.checkbox', function(){
     $('#continue').prop('disabled',$('input.checkbox:checked').length == 0);
 });

http://api.jquery.com/on/

于 2012-12-21T19:38:03.070 回答
3

尝试将您的checkbox处理程序更改为

$("body").on("click", ".checkbox", function(){
    $('#continue').prop('disabled',$('input.checkbox:checked').length == 0);
});
于 2012-12-21T19:36:52.850 回答
3

也许您应该通过实时绑定尝试一下

$(document).ready(function() {
    ...

    $(document).on( 'click', '.checkbox', function(){
        $('#continue').prop('disabled',$('input.checkbox:checked').length == 0);
    });
});

这种方式允许您侦听事件以及在事件绑定完成后声明的对象。

于 2012-12-21T19:36:55.117 回答