2013-05-30 79 views
2

我有一個圖像的盒子,當懸停事件被解僱時,我顯示一個社交媒體,如FB,Twitter,pinterest等共享按鈕覆蓋。
現在,當用戶點擊重疊部分時,我希望他重定向圖像的詳細信息頁面,如果他點擊任何社交媒體按鈕,則應執行後續操作。這就是我試過的
Jquery單擊事件不起作用的覆蓋按鈕

<script type="text/javascript"> 
$(".over").click(function(e){ 
    if ($(e.target).is('.followBtn')) { 
     //this should not trigger if a click occured on one of the links 
      console.log('herhererhreh'); 
      e.stopPropagation(); 
    }else{ 
     window.location=$(this).find("a.overClick").attr("href"); 
      //alert('in else!!'); 
    } 

}); 

這是與按鈕相同的覆蓋div的HTML

<div class="over"> 
     <div class="twitter"></div> 
     <div class="facebook"></div> 
     <div class="pintrest"></div> 
     <a href="javascript:void(0)" class="followBtn">Follow Vendor</a> </div> 
    </div> 

.over是類覆蓋的<div>.followBtn是類上的覆蓋按鈕的。
如果我點擊疊加層,它可以正常工作,但是當我點擊上面的按鈕時,它會進入if,但執行多次,即在控制檯窗口中獲得10-12個console.log輸出。
我無法弄清楚這個問題。任何輸入或鏈接都會有幫助。

更新:我的問題在一定程度上,它是b'co​​z類的印刷品的console.log多次(我有多個圖像,並點擊該事件觸發所有這些的)。我的問題是我如何將this傳遞給目標,以便我只獲取當前執行該事件的按鈕?或者我需要在id上做到這一點?

回答

1

也許這樣的事? .over是您的事件處理程序將應用的DOM的最高級別,那麼您將有一個選擇器,告訴您在'.over'中您感興趣的內容。處理程序內部的$(this)引用事件的目標。

$(".over").on('click', '.followBtn', function(e){ 
    //this should not trigger if a click occured on one of the links 
    console.log('herhererhreh'); 
    e.stopPropagation(); 
}).on('click', 'a.overClick', function(e) { 
    //console.log('in else!!'); 
    window.location=$(this).attr("href"); 
}); 
+0

問題已解決,但我忘了添加答案!謝謝你的回答 – coderunner