Lan*_*usT 2 javascript jquery bind unbind
我在div中有一个元素,它有一个与之关联的click事件.两个点击事件都可以正常工作,除非它们同时触发.
当我单击内部元素以禁用父div的click事件时:
我的html(在@foreach MVC Razor循环中):
<td class="tdfuncLangSignOff tdNotChecked tdLang@(item.Language.Name)" title="@(item.SignedOffStatus)">
<div class="addComment"></div>
@Html.Hidden("funcSignOffId", item.Id)
</td>
Run Code Online (Sandbox Code Playgroud)
我的jquery:
var handler = function () {
var thisTD = $(this);
var signOffId = thisTD.parent().children("input#funcSignOffId").val();
console.log("parent div click");
}
$(".tdfuncLangSignOff").click(handler);
$(".addComment").click(function () {
$(this).parent().unbind("click")
console.log("nested div click");
//$(this).parent().click(handler)
});
Run Code Online (Sandbox Code Playgroud)
我从这个帖子中找到了处理程序的想法
这允许我点击addComment div并根据需要禁用父div的点击.但重新绑定显然不会发生.当我$(this).parent().click(handler)在addComment单击功能中取消注释时,单击触发器,控制台显示"父div单击".
如何在不立即触发的情况下重新绑定父div的点击?
如果我理解正确:为了阻止事件的传播,请使用event.stopPropagation().
例:
<div id="a">
Outer
<div id="b">Inner</div>
<div>
Run Code Online (Sandbox Code Playgroud)
在JQuery中:
$("#a").click(function(event) {alert("a");});
$("#b").click(function(event) {alert("b"); event.stopPropagation();});
Run Code Online (Sandbox Code Playgroud)
您可以在这里阅读更多内容:http: //api.jquery.com/event.stopPropagation/
| 归档时间: |
|
| 查看次数: |
3195 次 |
| 最近记录: |