我有麻煩簡單的菜單隱藏/顯示與jQuery。jQuery顯示一個元素,如果一個主包裝被點擊,但不是如果一個特定元素被點擊
的HTML標記如下:
<div class="content borderRad5" id="mainWrapper">
<div id="ticketControl" class="noPrint blackBoxShadow">
<span id="printThis" class="TicketButton">Print</span>
<span id="emailThis" class="TicketButton">Email as Word</span>
<div id="emailDoc" class="blackBoxShadow borderRad5">
<div class="underline">Email to:</div>
<label>Email</label>
<span>
<input type="text" class="smallText" />
</span>
</div>
<span id="wordThis" class="TicketButton">Save as Word</span>
<span id="addToLoyalty" class="TicketButton">Add to Account</span>
<span id="addNote" class="TicketButton">Add Note</span>
<span id="refundThis" class="TicketButton">Refund</span>
</div>
---- THE REST OF THE PAGE ----
</div>
#ticketControl
是包含菜單隱藏的div。當鼠標在.content
div內的任何地方點擊時,我希望它滑入視圖。下面的jQuery可以做到這一點。
$('.content').live('click', function() {
$('#ticketControl').slideToggle('slow');
});
不過,我有需要點擊#emailThis
時滑入鑑於此主菜單#emailDoc
內的第2隱藏DIV,顯然這是容易的,但是,我不能再次隱藏菜單停止它。
我意識到爲什麼它這樣做,因爲.content
中的任何內容觸發slideToggle函數如上,但我似乎無法阻止它,我試過使用.not('.TicketButton')
並試圖獲得父ID和排除它們等上,但我顯然錯過了一些明顯的東西!
任何幫助非常感謝(是的,我知道我應該使用jQuery on
但我現在live
堅持的......!)
你*有*使用'活'嗎?你是否動態插入元素?一旦點擊'#emailDoc',你只需要防止事件冒泡。如果你使用'live',這可能會很棘手。 – 2012-01-30 10:39:18
實際上我不必使用'live',不,但我仍然無法使用它。 ('#ticketControl')。click(function(){('#ticketControl')。slideToggle('slow'); });'但它不會讓區別...爲什麼它忽略了「不」? – 2012-01-30 11:08:21
'.not'正在過濾這組元素。所以你在說:*選擇所有具有「內容」類的元素,並刪除ID爲「ticketControl」*的元素。 – 2012-01-30 11:09:41