jQuery delegate() / on() - 强制事件顺序
jQuery delegate() / on() - force order of events
也许是个愚蠢的问题,但是...
在这个简单的代码中:
$(".Q").on("click", ".container", containerClick);
$(".Q").on("click", ".container .oneElement", oneElementInContainerClicked);
如果点击 .container 中的 .oneElement,首先调用 oneElementInContainerClicked。
是否可以强制事件顺序,先调用 containerClick,然后调用 oneElementInContainerClicked
尝试在 containerClick
中包含对 e.target
的检查;在 oneElementInContainerClicked
内的 $(this).parents(".container")
上调用 .trigger("click")
function containerClick(e) {
if (e.target.className !== "oneElement")
console.log("container")
}
function oneElementInContainerClicked() {
console.log("oneElement");
$(this).parents(".container").trigger("click")
}
$(".Q").on("click", ".container", containerClick);
$(".Q").on("click", ".container .oneElement", oneElementInContainerClicked);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div class="Q">
<div class="container">container
<div class="oneElement">oneElement</div>
</div>
</div>
也许是个愚蠢的问题,但是...
在这个简单的代码中:
$(".Q").on("click", ".container", containerClick);
$(".Q").on("click", ".container .oneElement", oneElementInContainerClicked);
如果点击 .container 中的 .oneElement,首先调用 oneElementInContainerClicked。
是否可以强制事件顺序,先调用 containerClick,然后调用 oneElementInContainerClicked
尝试在 containerClick
中包含对 e.target
的检查;在 oneElementInContainerClicked
$(this).parents(".container")
上调用 .trigger("click")
function containerClick(e) {
if (e.target.className !== "oneElement")
console.log("container")
}
function oneElementInContainerClicked() {
console.log("oneElement");
$(this).parents(".container").trigger("click")
}
$(".Q").on("click", ".container", containerClick);
$(".Q").on("click", ".container .oneElement", oneElementInContainerClicked);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div class="Q">
<div class="container">container
<div class="oneElement">oneElement</div>
</div>
</div>