如何部分防止默认()?

pim*_*vdb 5 javascript jquery google-chrome preventdefault

有一个<label><a href="#">内部元素.我想阻止<a>元素的默认行为(即导航),但它应该执行<label>元素的默认行为(即检查其中的复选框).

测试用例:http://jsfiddle.net/3M6WE/.单击foo切换复选框.单击bar不导航但不切换复选框.

我怎么能有<a>元素没有导航,但它切换复选框?我想避免像手动切换复选框一样的黑客攻击.preventDefault如果可以的话,我正在寻找"部分" .

Rei*_*Wit 4

您可以触发父元素(标签)的单击:

http://jsfiddle.net/3M6WE/11/

$("a").on("click", function(e) {
    e.stopPropagation();
    $(this).parent().click();
    // do stuff...
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

然后施展一些魔法,最后调用preventDefault();