我想在点击某个div('.checker')后触发点击事件输入。换句话说,点击'.checker'模拟复选框上的点击事件,并远程检查它。第一次点击不会触发事件
我编写的代码有效,但只有第二次点击后才会触发,第一次失败。这种情况甚至不会发生在'.checker'上,也发生在复选框上。
以下所有HTML都包装在jquery折叠菜单中。点击'h3'后,'.sub-tree-wrap'折叠。 'e.stopPropagation'用于防止冒泡,从而导致菜单崩溃。
jQuery的制服的工作是:点击输入(复选框)泡沫,这对切换span和div类 '.control_multi ' - http://uniformjs.com/
上的jsfiddle它的工作原理,但没有的jQuery(' 检查'。) unform - http://jsfiddle.net/mciastek/PQP9S/3/(thx Mark S)
重要的是,我只能通过Javascript/jQuery来操作HTML。
HTML
<h3><div class='checker'></div></h3>
<div class='sub-tree-wrap'>
<div></div>
<div class='control_multi'>
<div>
<span>
<div class='checker'>
<span>
<input type='checkbox'>
</span>
</div>
</span>
</div>
</div>
</div>
</div>
的Javascript/jQuery的
$('h3 > .checker').click(function(e){
// prevent list collapse after click
e.stopPropagation();
$this = $(this);
// if has control_open or checkbox is disabled don't run multiple checking
var subTree = $this.parent().next();
if((!subTree.hasClass('has-open')) && !($this.hasClass('disabled'))) {
var inputCheck = $this.parent().next().find('.control_multi').find('input:checkbox')
inputCheck.trigger('click');
}
// toggle class .checked after click
$this.children('span').toggleClass('checked');
});
你能否重现上jsfiddle.net? – zerkms
你有一个以'.checker'开头的类名,所以你的jQuery选择器不起作用。也不要将块元素(div)放入内联元素(span)中。 – untitled
'$ this'被设置为全局变量,这是您的意图吗? – carmina