2015-12-02 125 views
0

力順序也許一個愚蠢的問題,但...jQuery的委託()/上() - 事件

在這個簡單的代碼:

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

如果.oneElement在.container被點擊時,第一oneElementInContainerClicked被調用。

是有可能迫使事件的順序,使得containerClick首先被調用,然後oneElementInContainerClicked

+0

_「是有可能迫使事件的順序,使得containerClick首先被調用,然後oneElementInContainerClicked」兩個單擊處理_預計結果被稱爲? – guest271314

+0

一種方法可能是從所需順序的'oneElementInContainerClicked'內手動調用'containerClick'(或者* it *調用的邏輯),然後停止事件傳播,而不調用其他處理程序。 – David

+0

這個概念被稱爲事件捕獲..http://stackoverflow.com/questions/17249125/event-capturing-jquery –

回答

1

嘗試,包括檢查中containerClicke.target;呼籲$(this).parents(".container").trigger("click")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>

+0

@GregBala請注意,在重新閱讀問題時,出現'$(this).parents(「。container」)。trigger(「單擊「)'應該在console.log(」oneElement「);'oneElementInContainerClicked'內部調用以返回預期結果? – guest271314