jQuery delegate()/ on() - 强制事件顺序

时间:2015-12-02 18:28:46

标签: javascript jquery javascript-events

也许是一个愚蠢的问题,但......

在这个简单的代码中:

 $(".Q").on("click", ".container", containerClick);
 $(".Q").on("click", ".container .oneElement", oneElementInContainerClicked);

如果单击.container中的.oneElement,则首先调用oneElementInContainerClicked。

是否可以强制事件的顺序,以便首先调用containerClick,然后调用oneElementInContainerClicked

1 个答案:

答案 0 :(得分:1)

尝试在e.target内检查containerClick;在.trigger("click")

中的$(this).parents(".container")上呼叫oneElementInContainerClicked

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>