我正在開發一種水平菜單,但點擊時可見並隱藏在點擊上,但點擊某些箭頭時可見,而隱藏點擊時在文檔上而不是某個div容器。在那個容器裏還有一些其他的元素。如果我們寫document.onclick = closingfunction,那麼它會關閉用戶是否單擊該div本身。我想在用戶點擊任何地方但不在該div中或箭頭上時調用closefunction。檢測點擊是不是一些特定的div
似乎會有解決方案,但我沒有找到一個,所以這就是爲什麼張貼在這裏。請回復。
在此先感謝你們。
我正在開發一種水平菜單,但點擊時可見並隱藏在點擊上,但點擊某些箭頭時可見,而隱藏點擊時在文檔上而不是某個div容器。在那個容器裏還有一些其他的元素。如果我們寫document.onclick = closingfunction,那麼它會關閉用戶是否單擊該div本身。我想在用戶點擊任何地方但不在該div中或箭頭上時調用closefunction。檢測點擊是不是一些特定的div
似乎會有解決方案,但我沒有找到一個,所以這就是爲什麼張貼在這裏。請回復。
在此先感謝你們。
您可以使用jQuery是()函數來檢測當前目標是否與特定選擇器匹配:
$('ul.container li').click(function(e){
if ($(e.target).is('.dropdown')) {
//do something when clicked inside dropdown
}
})
使用原型,你可以做這樣的事情
document.observe('click', function(ev) {
var el = Event.element(ev);
if ((el !== $('thediv'))
&& !el.descendantOf(thediv)) {
// hide div here
}
});
標籤jQuery問題的原型?你很勇敢。大聲笑 – epascarello
哈哈,甚至沒有看到標籤,閱讀問題,並看到document.onclick = ...並認爲OP是不是使用框架,看到了一個開放;) – epoch
不用擔心,它也給了我想法顯然jquery對我更有用 – Hafiz
您可以使用jQuery的最接近(),看看是否點擊是裏面的菜單: http://api.jquery.com/closest/
$('body').click(function(e){
if($(e.target).closest('.myMenuDiv,.myMenuArrow').length === 0){
// Close it
}
});
所以我可以使用文檔而不是ul.container li,對吧? – Hafiz
我想是這樣,但如果可以最大限度地減少無用事件的火災數量,最好更具體一些。 –