2010-09-23 92 views
1

問題在主題。jquery:防止點擊div內關閉它...所有元素

樣品

<div id="trigger">click here</div> 
<div id="slider"> content goes here: form elems, divs, spans, a etc. </div> 

如何做呢到目前爲止

$(document.body).click(function(event){ 
     var target = $(event.target); 
      if (!target.is("#trigger") && !target.is("#slider") && [all elems in slider.div...] 
} 

我盡力去完成什麼:
避免列出所有slider.div elems的ID - 如果可能的話。
允許滑塊div內的id =「close」這樣的div與div一樣關閉它。

+0

你想要的按鈕滑塊關閉時消失,還是希望按鈕保持可見狀態,以便可以多次打開和關閉滑塊? – 2010-09-24 15:42:24

回答

2

這可以通過多種方式完成,但我最喜歡的是命名觸發器,如slider_1,並給它一個類,如果.slider。然後給實際的滑塊一個slider_1_content的ID與一個類如果.slider_content。這將允許你寫類似:

$(".slider").click(function() { 
    $("#" + this.attr("id") + "_content") ... 
}); 

然後,您可以指定一個close類的關閉按鈕/鏈接,並迫使他們關閉父滑塊一樣:

+0

[**'.closest()'**](http://api.jquery.com/closest/)will,'「獲取匹配選擇器的第一個祖先元素,從當前元素開始, DOM樹。「OP的元素是**兄弟**而不是後代。 ------另外,如果父母是滑塊,該按鈕將消失。你可以使用'.find()'作爲父按鈕和子滑塊。 – 2010-09-23 21:47:53

+0

'.close'按鈕/鏈接將是一個後代而不是兄弟姐妹。我發佈的第一段代碼解決了觸發器/滑塊問題。 – 2010-09-23 21:56:28

+0

準確。如果'close'分類的DIV是一個後代,那麼如果你點擊它,**會消失**(與滑塊內容一起)!!如果它不是後代,那麼'close()'不起作用。試試吧==> http://jsfiddle.net/tSTcL/ ---- PS:我沒有得到通知你評論回來,除非你用'@ Peter'開始你的消息。只有作者和編輯的帖子才能獲得自動通知。 – 2010-09-23 22:07:54

相關問題