2015-09-04 63 views
0

在我最後一個問題中,我想到了如何顯示我自己的上下文菜單和鏈接,具體取決於你點擊的div(有關更多信息,請參見here)。上下文菜單,隱藏在某些區域

現在我有問題,我沒有想法,我怎麼可以防止,以上div的我想顯示上下文菜單,上下文菜單不顯示。爲了使我的問題清楚, heres a fiddle.

所以在頂部區域,我不想讓一個上下文菜單出現在所有的,在div盒(尋找這樣的:

<div class="altContext"> 
    <a href="test.php?id=1">div1</a> 
    <p>....<br/>......<br/></p> 
</div> 

)我想顯示我的自定義上下文菜單。

問題是,如果我沒有點擊進入div,類「altContext」找到下一個最接近的div。這是必要的,因爲否則,當我右鍵單擊時,某些div不工作。我用這樣的代碼來做這件事:

if($(e.target).is('div')) 
      var targetDiv = $(e.target).find('a'); 
     else 
      var targetDiv = $(e.target).closest('div').find('a'); 

但是,這觸發了問題,在頂部區域,其中的div用於右鍵單擊。

是否有任何妥協,有兩個:每個div的個人上下文菜單與類「altContext」和上面的東西,根本不顯示上下文菜單..?

回答

2

DEMO

在你的代碼提供if(targetDiv != undefined)var targetDiv = $(e.target).closest('div.altContext').find('a')沒有返回undefined。所以我們需要檢查對象的長度。還加入了div.altContext作爲元素檢查更加精確。

if($(e.target).is('div.altContext')) 
    var targetDiv = $(e.target).find('a'); 
else 
    var targetDiv = $(e.target).closest('div.altContext').find('a'); 
if(targetDiv.length != 0){ 
    var linkVal = window.location.protocol + "//" + window.location.host + "/" + targetDiv.attr('href'); 
    var link = $('<a>') 
    .attr('href',linkVal) 
    .text(linkVal); 
    //console.log(link); 
    $("#rkm").empty() 
     .append(link) 
     .css({ 
      "left": x + "px", 
      "top": y + "px" 
     }) 
     .show(); 
} 
+0

謝謝你,在積極的如果結果,我已經嘗試添加類,但在其他情況下,我忘了這一點。 – nameless

+0

'沒有解釋!!! ,只是代碼?'不好的做法從你的聲譽的人 – dreamweiver

+0

@dreamweiver抱歉,我匆匆外出。 – RRK