我尝试通过点击li
或input type=[checkbox]
旁边的li
来允许折叠和展开嵌套列表。但是选中该复选框会导致触发容器li
,导致父li
折叠。
我通过设置全局
解决了这个问题window.checkbox_checked = true
在this fiddle中显示,但我宁愿不使用全局。这样做有更干净的方法吗?我尝试使用event.stopImmediatePropagation()
和event.stopPropagation()
,但都没有为我工作?
由于
正如费利克斯·金所指出的那样,我的问题是将li
包裹在div
中,这已禁用event.stopPropagation()
solution
答案 0 :(得分:1)
只需检查node name
内的click handler
是否为UL
,然后跳过该click event
。
event.target.nodeName
代码:
$('li.expandable').on('click', function (e) {
if(e.target.nodeName !== "INPUT")
{
//Code goes here.
}
});