2017-01-18 102 views
3

假設我有一些填充了內容的大型DIV。將錨點標記內的可點擊組件嵌套

的內容是動態的,它可以是任何東西,它可以包括不同類型的可點擊的組件 - 按鈕,視頻,鏈接等

我需要的DIV自己是點擊和路由的一些網址,但同時我需要不同類型的可點擊組件才能使用。如果您按任意鍵,則不應調用DIV級別的路由。

我已經嘗試不同的方法,似乎沒有工作:

  1. 裹帶的標籤,整個DIV - 的DIV將路由到URL內的任何點擊,並沒有可點擊組件會可用。此外,由於無法嵌套A標籤,因此可以防止在該DIV中嵌入其他A標籤。
  2. 向DIV添加一個onclick事件並進行相應的路由 - 這解決了A標籤嵌套問題,但是再次沒有可用的可點擊組件。

,唯一合理的解決方案,我可以看到的是處理點擊所有可點擊的組件事件和對附加事件進行stopPropagation所以不會泡到DIV。

但是,這種解決方案是不可行的只是我作爲內該div有可能是不屬於我的控制之下組件,如與未知的內容和功能,視頻控制等

I幀是否有不同的方法我可以使用我失蹤?

更新:

我繼續來管理不同組件的點擊事件和stopPropegation。

在A標籤上它的效果很好。

但是,當我有一個視頻元素與不同的控制按鈕,我試圖把它包裝在一個DIV和stopPropegation在該DIV,但它似乎並沒有工作,不知道爲什麼。

更新2:

這越來越被分鐘怪異......

所以我通過在包裝DIV同時添加stopPropegation和解決的preventDefault視頻元素的點擊次數。我不知道爲什麼我需要使用preventDefault。沒有意義。

現在我正面臨與另一個組件不同的問題。我有一個Bootstrap旋轉木馬,我用DIV包裝它,並試圖在該DIV上的單擊事件上停止播放,並嘗試添加preventDefault。當我在該DIV上停止播放時,傳送帶按鈕停止運行!?

一些幫助和解釋,將不勝感激..

更新3:

我想我可以用defaultPrevented價值的事件,以找出是否對執行路由主DIV元素與否。

我用帶有ui-sref屬性的A標籤包裹了我的主div(忘記提及這是一個Angular應用程序..),並綁定到ng-click事件。

但由於某種原因(似乎與ui-sref有關),jQuery的IsDefaultPrevented總是返回true。

因此,我用DIV替換了A標籤,並在檢查了IsDefaultPrevented值後執行了控制器內部的狀態更改。

所以現在所有的工作。但我不確定爲什麼。

回答

0

看看我的代碼;希望這能解決你的問題;

的HTML是考慮這樣的:

<div id="div1" style="width:50px;height:50px;background-color:red"> 

     <a href="#">Hello</a> 

</div> 

JS代碼是等;

$(document).ready(function(){ 

    $("#div1").click(function(){ 
     alert("on div1"); 
    }) 

    $("#div1 a").click(function(e){ 
     e.stopPropagation(); 
     alert("on div1 a"); 
    }) 
}) 

現在,如果你點擊「你好」;只會顯示「div1 a」警報。

+0

謝謝。這與我目前所做的相似。但是,停止傳播混亂了我在第二次更新中描述的事情 –