无法阻止Jquery中事件的传播

Ebb*_*bbs 0 html jquery stoppropagation

我有点困惑.我列出了名称旁边带有复选框的名称.列表是在向后端发布后动态构建的.

问题是每当我点击复选框时立即取消选中它.我之所以知道这一点,是因为如果在事件中插入警报,则会实际选中该复选框,直到警报被取消.

这是我的代码:

$("#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;
});
Run Code Online (Sandbox Code Playgroud)

事实上,我在listitem中有链接,我需要能够遵循.如果取出导航到链接的部分,则复选框功能正常.

这就是典型的名称列表:

<ul id="NamesList">
     <li id="1">
         <input class="checkbox" type="checkbox" />
         <a href="/some/link/somewhere/1">John Smith</a>
     </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Han*_*der 7

$("#NamesList").on("click", "input[type='checkbox']", function (e) {
    CheckboxClicked();
    e.stopPropagation();
})
Run Code Online (Sandbox Code Playgroud)

换成return false;e.stopPropagation();.return false相当于e.preventDefault(); e.stopPropagation();但是,你不想阻止默认:)

工作小提琴:http://jsfiddle.net/wpx6A/