1

我正在開發一種水平菜單,但點擊時可見並隱藏在點擊上,但點擊某些箭頭時可見,而隱藏點擊時在文檔上而不是某個div容器。在那個容器裏還有一些其他的元素。如果我們寫document.onclick = closingfunction,那麼它會關閉用戶是否單擊該div本身。我想在用戶點擊任何地方但不在該div中或箭頭上時調用closefunction。檢測點擊是不是一些特定的div

似乎會有解決方案,但我沒有找到一個,所以這就是爲什麼張貼在這裏。請回復。

在此先感謝你們。

回答

1

您可以使用jQuery是()函數來檢測當前目標是否與特定選擇器匹配:

$('ul.container li').click(function(e){ 
    if ($(e.target).is('.dropdown')) { 
     //do something when clicked inside dropdown 
    } 
}) 
+0

所以我可以使用文檔而不是ul.container li,對吧? – Hafiz

+1

我想是這樣,但如果可以最大限度地減少無用事件的火災數量,最好更具體一些。 –

1

使用原型,你可以做這樣的事情

document.observe('click', function(ev) { 
     var el = Event.element(ev); 
     if ((el !== $('thediv')) 
       && !el.descendantOf(thediv)) { 
      // hide div here 
     } 
    }); 
+0

標籤jQuery問題的原型?你很勇敢。大聲笑 – epascarello

+0

哈哈,甚至沒有看到標籤,閱讀問題,並看到document.onclick = ...並認爲OP是不是使用框架,看到了一個開放;) – epoch

+0

不用擔心,它也給了我想法顯然jquery對我更有用 – Hafiz

1

您可以使用jQuery的最接近(),看看是否點擊是裏面的菜單: http://api.jquery.com/closest/

$('body').click(function(e){ 
    if($(e.target).closest('.myMenuDiv,.myMenuArrow').length === 0){ 
    // Close it 
    } 
});