2017-06-21 61 views
0

我正在使用jquery slidetoggle &幻燈片,因此,當用戶單擊#link時,#div(默認隱藏)幻燈片打開。此外,任何地方的任何點擊都應該滑動並隱藏#div。所以,我的劇本是這樣的:jquery slideToggle,在幻燈片中停止傳播

$(document).ready(function() { 
    $('#link').click(function(){ 
     $('#div').slideToggle('fast'); 
     event.stopPropagation(); 
    }); 
    $(window).click(function() { 
     $('#div').slideUp('fast'); 
    }); 
}); 

這在Chrome中工作正常,但在Firefox中的第一次點擊打開DIV也觸發效果基本show,所以DIV向下滑動,然後立刻向後滑動起來。我在這裏做錯了什麼?有沒有更好的方法來完成我想要做的事情?

+0

當你有其他點擊事件時綁定一個事件點擊窗口對象對我來說是奇怪的。我會重新設計這種行爲。可能嗎? –

回答

1

好像你已經錯過了event對象傳遞給listener.Correct你的代碼這一點,並嘗試..

$(document).ready(function() { 
    $('#link').click(function(event){ //note here 
     $('#div').slideToggle('fast'); 
     event.stopPropagation(); 
    }); 
    $(window).click(function() { 
     $('#div').slideUp('fast'); 
    }); 
}); 

更多詳細信息請點擊這裏event.stopPropogation

希望這有助於!

+0

這是行得通的,但爲什麼事先在Chrome上運行? Chrome是否以與FF完全不同的方式處理j/s? –

+0

就行了event.stopPropogation事件對象爲null,所以它不能停止傳播。而且不同的瀏覽器幾乎沒有處理差異@pg。 – vijay