2014-01-22 147 views
3

我有一個列表元素li,成爲我的圖像輪播。每個元素都是一個縮略圖,使用jQuery可以點擊,因爲我需要將圖像作爲libackground-image。這我不能改變。當大拇指點擊時,它會調用一個lightbox來顯示作爲bg參數傳遞的圖像。jQuery,點擊其可點擊的容器內的元素 - 如何覆蓋

<ul id="piclist"> 
    <li class="box" style="background-image: url('url_1');"><i class="seq" id="1"></i></li> 
    <li class="box" style="background-image: url('url_2');"></li> 
    <li class="box" style="background-image: url('url_3');"><i class="seq" id="2"></i></li> 
    <li class="box" style="background-image: url('url_4');"></li> 
</lu> 

的一塊我jQuery代碼要做到這一點:

<script type="text/javascript"> 
    $('.box').click(function() { 
     return $(this).ekkoLightbox(); 
    }); 
</script> 

IT WORKS!但在某些特殊情況下,縮略圖必須顯示一種按鈕,所以我使用了定位<i></i>,因爲該項目中使用了Font Awesome。

圖像波紋管可以說明什麼即時通訊談論:

enter image description here

的問題是:

li負載的i元素,它也必須是可點擊的,它的鏈接必須覆蓋他的父母鏈接 - 容器。

我在jQuery中做了一段代碼來做到這一點,但總是當我點擊i元素按鈕時,操作會從li加載圖片燈箱。這是不對的。它應該執行另一個操作,例如,在新窗口中打開一個URL,加載另一個模式,whatelse。

<script type="text/javascript"> 
    $('.box').click(function() { 
     return $(this).ekkoLightbox(); 
    }); 
    $('.seq').click(function() { 
     console.log($(this).attr("id")); //IT WORKS! 
      *do other action...* //Doesn´t work, open the <li> lightbox! 
    }); 
</script> 

任何幫助? :)

回答

7

更改$( 'SEQ')點擊此:

$('.seq').click(function(ev) { 
    ev.stopPropagation(); 

    console.log($(this).attr("id")); //IT WORKS! 
    *do other action...* //Doesn´t work, open the <li> lightbox! 
}); 

這將防止click事件冒泡觸發點擊甚至是我的父母(李)。注意我添加了事件對象作爲參數,我在做任何其他事情之前調用stopPropagation(http://api.jquery.com/event.stoppropagation/)方法。

+0

嗨,何塞,它的工作!非常好,最簡單的不可能! hehehe – Massa

+1

太棒了,很高興它有幫助。你介意接受答案作爲這個問題的正確答案嗎? – JoseMarmolejos

+0

在正確的時間恰到好處的代碼 - 謝謝! – wloescher

0

檢查e.target是相同的:

<script type="text/javascript"> 
    $('.box').click(function(e) { 
     if(e.target !== this) return; 
     return $(this).ekkoLightbox(); 
    }); 
    $('.seq').click(function() { 
     console.log($(this).attr("id")); //IT WORKS! 
     *do other action...* 
    }); 
</script>