我想在點擊某個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