2014-01-24 25 views
0

當我點擊我的聯繫我們Nav鏈接它打開順利,如果我在它順利關閉覆蓋任意位置單擊,但我點擊關閉img,它在關閉時有一個探索者。jQuery的.hide(「夾」)的影響導致的重複效應,當我點擊圖像

而且它關閉,如果我點擊「表單包」內,但顯然它需要這樣做,讓這樣的人可以使用。

這是一個鏈接和腳本。

http://jsfiddle.net/JohnWeb/fe5YZ/

$(document).ready(function() { 
    $('#nav-contact, #foot-contact').click(function(){ 
     $('#overlay').show("clip", 600); 
    }); 
    $('#close-btn, #overlay').click(function(){ 
     $('#overlay').hide("clip", 600); 
    }); 
}); 

回答

2

之所以形式,當你點擊裏面的形式是因爲#form-wrap被包裹在裏面#overlay格關閉。

因此#form-wrap裏面的點擊事件也會觸發#overlay div內的點擊。

您需要防止它使用e.stopPropagation()

$('#form-wrap').click(function(e){ 
    e.stopPropagation(); 
}); 

Updated Fiddle

+0

對於同一件事我們有兩種不同的實現。 – royhowie

+0

我應該建議另一個嗎? 'event.preventDefault();' – royhowie

+0

@Luxelin不,你不能在這種情況下使用'event.preventDefault()',event.preventDefault()'只阻止事件的默認動作,不會阻止事件在DOM樹上冒泡 – Felix

1

我認爲它與事實按鈕元素是另一個元素的子元素,做它,點擊時也會導致模式關閉。

所以,你可以做的是:

$("#close-btn").click(function(e){ 
    $("#overlay").hide(); 
    return false; 
} 

這使按鈕的工作。如果您希望表單不要在任何地方單擊時關閉模式,只需將$("#form-wrap").click(function(){event.preventDefault();})添加到您的腳本。