我有点困惑。我列出了名称旁边带有复选框的名称。该列表是在向后端发布后动态构建的。
问题是每当我点击复选框时立即取消选中它。我之所以知道这一点,是因为如果在事件中插入警报,则会实际选中该复选框,直到警报被取消。
这是我的代码:
$("#NamesList").on("click", "input[type='checkbox']", function (e) {
CheckboxClicked();
return false;
})
.on("click", "li", function (e) {
e.preventDefault();
e.stopPropagation();
switch (e.target.nodeName) {
case "A":
GetPerson(e.target.href)
break;
case "LI":
GetPerson($("a", e.target).attr("href"))
break;
default: return false;
}
return false;
});
事情是,我在listitem中有链接,我需要能够遵循。如果取出导航到链接的部分,则复选框功能正常。
这是典型的名称列表:
<ul id="NamesList">
<li id="1">
<input class="checkbox" type="checkbox" />
<a href="/some/link/somewhere/1">John Smith</a>
</li>
</ul>
有什么想法吗?
答案 0 :(得分:7)
$("#NamesList").on("click", "input[type='checkbox']", function (e) {
CheckboxClicked();
e.stopPropagation();
})
将return false;
替换为e.stopPropagation();
。 return false
相当于e.preventDefault(); e.stopPropagation();
但是,您不希望阻止默认值:)
答案 1 :(得分:4)
尝试
e.stopImmediatePropagation()
这将确保事件不会传播。