触发动态创建的选择更改的另一个函数

时间:2012-02-10 21:29:01

标签: javascript jquery select triggers onchange

使用数据表。它使用Javascript

动态生成以下选择框

enter link description here http://content.screencast.com/users/TT13/folders/Jing/media/47ac4d39-5e96-415b-a51e-6d784ef18a3b/2012-02-11_0123.png

Firebug为

上方的选择框显示了这段代码

enter image description here

我尝试使用以下简单函数触发$('#check_all').click( function()。但它不起作用。代码中有什么错误吗?

 $('select[name=list_length]').change(function(){
    if($('#check_all').prop('checked')) 
        $('#check_all').click();    
});

$('#check_all').click( function() {
    if($(this).prop('checked')){
        totalqt=0;
        $('.checkbox').each(function(){
            $(this).prop('checked', true);    
            doIt(this);             
        });
    }else{            
        $('.checkbox').each(function(){
            $(this).prop('checked', false);    
            doIt(this);             
        });
    }
    changeQt();     


} );

2 个答案:

答案 0 :(得分:1)

像这样更改您的代码。

function checkAllCheckboxes(isChecked) {
    if(isChecked ){
        totalqt=0;
    }
    $('.checkbox').each(function(){
        $(this).prop('checked', isChecked);    
        doIt(this);             
    });
    changeQt();     
}

$('select[name=list_length]').change(function(){
    if($('#check_all').is(':checked')){
        $('#check_all').prop('checked', false);
        checkAllCheckboxes(false);    
    }
});

$('#check_all').click(function(){
    checkAllCheckboxes(this.checked);
});

答案 1 :(得分:0)

我可以在代码中看到一件可能存在问题的事情,但由于你没有写出究竟是什么失败,我不确定这是不是问题。

 $('select[name=list_length]').change(function(){
    if($('#check_all').prop('checked')) 
        $('#check_all').click();    
});

在这里,您会看到是否选中了复选框,然后您在其上调用了一个点击事件。

在单击事件处理程序中,再次检查是否选中该框并迭代其他复选框。但是,您在更改事件处理程序中调用的click事件将更改复选框的选中状态,从而获得所需内容的相反结果。

你喜欢这个解决方案吗?

var toggleCheckBoxes = function() {
    if($(this).prop('checked')){
        totalqt=0;
        $('.checkbox').each(function(){
            $(this).prop('checked', true);    
            doIt(this);             
        });
    }else{            
        $('.checkbox').each(function(){
            $(this).prop('checked', false);    
            doIt(this);             
        });
    }
    changeQt();     
}

$('#check_all').click(toggleCheckBoxes);
$('select[name=list_length').change(function(){
  if($('#check_all').is(':checked')){ toggleCheckBoxes(); }
});