>我有一个双重事件要管理。这两个事件都是"点击",它们由jquery处理。html如下:
<div class="siteMap" style="width:23%;">
<h5>Divisione Anticontraffazione</h5>
<span class="menufooter">
<span class="link1"><a href="#scheda1">Introduzione</a></span><br>
<span class="link2"><a href="#scheda2">Filosofia</a></span><br>
<span class="link3"><a href="#scheda3">Negozio online</a></span></span><br>
</div>
然后我有我的点击事件,它在菜单页脚跨度内和每个链接跨度内触发。代码是这样的:
$(document).ready(function() {
$('span.menufooter').click(function() {
//my code here
});
$("span.link1").click(function() {
//my code here
});
});
我需要一个事件捕获操作,在单击span link1触发之前,单击span菜单页脚必须触发事件。此时,这两个事件都没有触发。有什么提示吗?
只在.menufooter
上发生火灾事件怎么样
$(document).ready(function() {
$('span.menufooter').click(function(e) {
//my code here 1
// Capture Event Propagation
if ( $("span .link1").find(e.target).length>0 ){
//my code here 2
};
});
});
http://jsfiddle.net/9QLtG/
您可以阻止单击冒泡,然后触发对父元素的单击,以便该处理程序中的任何内容首先执行(除非它是异步的)
$(document).ready(function () {
$('.menufooter').click(function () {
// fires before ....
});
$("span.link1").click(function (e) {
e.stopPropagation();
$('.menufooter').trigger('click');
// .... this fires, as it's triggered above
});
});
小提琴
我会有 1 次单击侦听器来侦听包装器。您可以检查事件的目标,以查看他们是否实际单击了链接并相应地运行代码。
例如:
$(document).ready(function() {
$('.container').click(function(e) {
// Perform action when they clicked in the main wrapper,
// regardless of whether or not it was a link.
console.log("I clicked in the wrapper...");
if ($(e.target).hasClass('link')) {
// Perform action if they clicked on a link.
console.log("...but more specifically, on a link.");
}
});
});
这里有一个小提琴来证明这一点:http://jsfiddle.net/WaYFr/
试试这个event.stopPropagation();
$("span.link1").click(function(event) {
event.stopPropagation();
...
});