Javascript 冲突事件处理程序-如何控制触发哪个处理程序?
我的页面上有一个地址列表。每次添加新地址时,我都进行Ajax保存,然后将新地址附加到地址列表中。每个地址都位于一个DIV中,并为其分配了一个类,我已经为该类委派了一个click处理程序,以便在单击地址DIV时,我可以对其执行一些操作。我想做的是在每个地址div中包含一个链接,允许我编辑该特定地址。问题是,当单击链接并调用链接的处理程序时,我也会触发div的处理程序。我的问题是:如何处理“编辑”链接单击,而不同时触发它所在的div的单击处理程序Javascript 冲突事件处理程序-如何控制触发哪个处理程序?,javascript,jquery,events,javascript-events,event-handling,Javascript,Jquery,Events,Javascript Events,Event Handling,我的页面上有一个地址列表。每次添加新地址时,我都进行Ajax保存,然后将新地址附加到地址列表中。每个地址都位于一个DIV中,并为其分配了一个类,我已经为该类委派了一个click处理程序,以便在单击地址DIV时,我可以对其执行一些操作。我想做的是在每个地址div中包含一个链接,允许我编辑该特定地址。问题是,当单击链接并调用链接的处理程序时,我也会触发div的处理程序。我的问题是:如何处理“编辑”链接单击,而不同时触发它所在的div的单击处理程序 <div id="addrdiv">
<div id="addrdiv">
<div class="customer-shipping-address">
Name 1
Addr 1
<a href='' class='addredit'>Edit This Address</a>
</div>
<div class="customer-shipping-address">
Name 2
Addr 2
<a href='' class='addredit'>Edit This Address</a>
</div>
</div>
当有人单击每个地址中的编辑链接时,我希望该链接的处理程序启动,而不是整个地址块的处理程序启动。这可能吗?如果是,如何操作?在事件对象中有一个属性“target”,该属性是本例中单击的元素,因此您可以检查event.target==this 使用jQuery.com的示例是:
$("#addrdiv").delegate(".customer-shipping-address", "click", function(e){
if($(e.target).is(this)) {
//you can do $(e.target).is(".customer-shipping-address") too
console.log("clicked element is .customer-shipping-address");
}
});
在事件对象中有一个属性“target”,该属性是本例中单击的元素,因此您可以检查event.target==this 使用jQuery.com的示例是:
$("#addrdiv").delegate(".customer-shipping-address", "click", function(e){
if($(e.target).is(this)) {
//you can do $(e.target).is(".customer-shipping-address") too
console.log("clicked element is .customer-shipping-address");
}
});
在事件对象中有一个属性“target”,该属性是本例中单击的元素,因此您可以检查event.target==this 使用jQuery.com的示例是:
$("#addrdiv").delegate(".customer-shipping-address", "click", function(e){
if($(e.target).is(this)) {
//you can do $(e.target).is(".customer-shipping-address") too
console.log("clicked element is .customer-shipping-address");
}
});
在事件对象中有一个属性“target”,该属性是本例中单击的元素,因此您可以检查event.target==this 使用jQuery.com的示例是:
$("#addrdiv").delegate(".customer-shipping-address", "click", function(e){
if($(e.target).is(this)) {
//you can do $(e.target).is(".customer-shipping-address") too
console.log("clicked element is .customer-shipping-address");
}
});
您需要将事件附加到链接
$("#addrdiv .customer-shipping-address a").delegate(".addredit", "click", function(e){
}
您需要将事件附加到链接
$("#addrdiv .customer-shipping-address a").delegate(".addredit", "click", function(e){
}
您需要将事件附加到链接
$("#addrdiv .customer-shipping-address a").delegate(".addredit", "click", function(e){
}
您需要将事件附加到链接
$("#addrdiv .customer-shipping-address a").delegate(".addredit", "click", function(e){
}
既然我做了一件事来证明我的评论是正确的,我想我会把它作为一个答案贴出来 您需要调用stopPropagation方法,以便事件停止在DOM()中冒泡:
既然我做了一件事来证明我的评论是正确的,我想我会把它作为一个答案贴出来 您需要调用stopPropagation方法,以便事件停止在DOM()中冒泡:
既然我做了一件事来证明我的评论是正确的,我想我会把它作为一个答案贴出来 您需要调用stopPropagation方法,以便事件停止在DOM()中冒泡:
既然我做了一件事来证明我的评论是正确的,我想我会把它作为一个答案贴出来 您需要调用stopPropagation方法,以便事件停止在DOM()中冒泡: stopPropagation()是实现这一点的快速方法,只需在事件的
.addredit
处理程序中调用它即可
$("#addrdiv").delegate(".addredit", "click", function (e) {
e.stopPropagation();
alert('edit clicked');
});
这里有一个fiddlestopPropagation()是实现这一点的快速方法,只需在事件的.addredit
处理程序中调用它即可
$("#addrdiv").delegate(".addredit", "click", function (e) {
e.stopPropagation();
alert('edit clicked');
});
这里有一个fiddlestopPropagation()是实现这一点的快速方法,只需在事件的.addredit
处理程序中调用它即可
$("#addrdiv").delegate(".addredit", "click", function (e) {
e.stopPropagation();
alert('edit clicked');
});
这里有一个fiddlestopPropagation()是实现这一点的快速方法,只需在事件的.addredit
处理程序中调用它即可
$("#addrdiv").delegate(".addredit", "click", function (e) {
e.stopPropagation();
alert('edit clicked');
});
这是一把小提琴。BOOOOOMit无法停止实时事件的传播。类似地,由.delegate()处理的事件@RubenSerrate@StevenWeb哈哈哈。。。。不,当然是我的错。请阅读此处的文档()。和替补演员的表演。BOOOOOMit无法停止实时事件的传播。类似地,由.delegate()处理的事件@RubenSerrate@StevenWeb哈哈哈。。。。不,当然是我的错。请阅读此处的文档()。和替补演员的表演。BOOOOOMit无法停止实时事件的传播。类似地,由.delegate()处理的事件@RubenSerrate@StevenWeb哈哈哈。。。。不,当然是我的错。请阅读此处的文档()。和替补演员的表演。BOOOOOMit无法停止实时事件的传播。类似地,由.delegate()处理的事件@RubenSerrate@StevenWeb哈哈哈。。。。不,当然是我的错。请阅读此处的文档()。这并不能阻止事件的发生,尽管事实上根本不确定它是否会起作用。addredit不是ayour right的孩子,我想到的是$(“#addrdiv.addredit”)。单击(函数(){e.stopPropagation();});这不会阻止事件冒泡,尽管实际上根本不确定它是否会工作。addredit不是ayour right的孩子,我想到的是$(“#addrdiv.addredit”)。单击(函数(){e.stopPropagation();});这不会阻止事件冒泡,尽管实际上根本不确定它是否会工作。addredit不是ayour right的孩子,我想到的是$(“#addrdiv.addredit”)。单击(函数(){e.stopPropagation();});这不会阻止事件冒泡,尽管实际上根本不确定它是否会工作。addredit不是ayour right的孩子,我想到的是$(“#addrdiv.addredit”)。单击(函数(){e.stopPropagation();});这是有用的-它并没有完全回答我的问题,但我可以看到它的明确用途。谢谢这是有用的-它并没有完全回答我的问题,但我可以看到它的明确用途。谢谢这是有用的-它并没有完全回答我的问题,但我可以看到它的明确用途。谢谢这是有用的-它并没有完全回答我的问题,但我可以看到它的明确用途。谢谢