通过JavaScript(或jQuery)在复选框上动态单击
我知道我可以将属性checked更改为checked,但我需要实际“单击”复选框来触发live()(jQuery)click事件。我知道我也可以让它成为一个函数,但如果可能的话,这会更简洁,代码更少 哦,仅供参考:通过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
$('.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 )