通过JavaScript(或jQuery)在复选框上动态单击

通过JavaScript(或jQuery)在复选框上动态单击,javascript,jquery,html,forms,checkbox,Javascript,Jquery,Html,Forms,Checkbox,我知道我可以将属性checked更改为checked,但我需要实际“单击”复选框来触发live()(jQuery)click事件。我知道我也可以让它成为一个函数,但如果可能的话,这会更简洁,代码更少 哦,仅供参考: $('.modal-form [name='+json[0].owners[x].name+']').click(); 不起作用。它检查em,但实际上并没有“单击”它们到jQuery触发live()事件的位置 如果有人感兴趣,下面是AJAX调用: $('.agenda-modal

我知道我可以将属性checked更改为checked,但我需要实际“单击”复选框来触发live()(jQuery)click事件。我知道我也可以让它成为一个函数,但如果可能的话,这会更简洁,代码更少

哦,仅供参考:

$('.modal-form [name='+json[0].owners[x].name+']').click();
不起作用。它检查em,但实际上并没有“单击”它们到jQuery触发live()事件的位置

如果有人感兴趣,下面是AJAX调用:

$('.agenda-modal input[type=checkbox]:not([name="emergency-item"])').live('click',function(){
        iid = $('.agenda-modal').attr('data-defaultitemid');
        the_type = $(this).parent().parent().attr('id');
        checked_item = $(this).val();

        if($(this).attr('checked')){
            if(the_type == 'the-elected-list'){
                $livepreview.agenda({
                    action:'update',
                    type:'owner',
                    id:iid,
                    owner:checked_item
                });
            }
            else if(the_type == 'the-bureau-list'){
                $livepreview.agenda({
                    action:'update',
                    type:'bureau',
                    id:iid,
                    bureau:checked_item
                });
            }
        }
        else{
            $livepreview.agenda({
                action:'get',
                type:'item',
                id:iid,
                callback:function(json){
                    if(the_type == 'the-elected-list'){
                        for(x in json[0].owners){
                            if(json[0].owners[x].name == checked_item){
                                $livepreview.agenda({
                                    action:'delete',
                                    type:'owner',
                                    id:json[0].owners[x].item_owner_id
                                });
                            }
                        }
                    }
                    else if(the_type == 'the-bureau-list'){
                        for(x in json[0].bureaus){
                            if(json[0].bureaus[x].name == checked_item){
                                $livepreview.agenda({
                                    action:'delete',
                                    type:'bureau',
                                    id:json[0].bureaus[x].item_bureau_id
                                });
                            }
                        }
                    }
                }
            });
        }
    });

这将“单击”复选框。我不确定它是否会触发与live()绑定的事件


请举例说明。通过生成复杂表达式,很可能找不到正确的元素。小声点

var el = $('.modal-form [name='+json[0].owners[x].name+']')
alert( el.length )

然后您可以
.trigger('click')
触发它。确保事件处理程序已绑定/设置。

显然,我不知道您的代码库,但我真的想知道通过假装UI交互调用函数是否“更干净”。它可能没有那么多代码,但对我来说听起来很脆弱。重新设计UI时会发生什么?或者其他开发人员修改了
live()
事件处理程序,却没有意识到您的代码也在隐式使用它?将代码移动到一个单独的函数中可以使其更清晰、更健壮(可能不会明显更长)。

请提供一个示例。通过生成复杂表达式,很可能找不到正确的元素。调低音量。@meder如果选中复选框,那么他就找到了正确的元素。不,就像我说的,在上面的代码中,它单击(并检查元素),但不单击元素。。。有一个AJAX调用(我将在上面1秒后发布),当点击复选框以动态保存选择时,该调用将被触发。您使用的是哪个版本的jQuery?我认为在1.4之前(实际上1.4.2是1.4的“固定”版本),事件冒泡有点不稳定——一个非常简单的测试页面表明它是有效的——可能是某个父元素上有一个“单击”处理程序,并且它返回“false”?对于警报中返回的每个项目,我都会得到一个“1”。因此,如果我选择了两个“所有者”,我会收到两个警报,每个警报返回“1”。
var el = $('.modal-form [name='+json[0].owners[x].name+']')
alert( el.length )