2012-11-30 24 views
2

我想單擊頁面中的其他位置時隱藏div。對於這一點,我有:子元素的Prototype.js event.target.id

$(document.body).observe('click', function(e){ 
    if(e.target.id != 'myDiv') { 
     $('myDiv').hide(); 
    } 
}); 

工作得很好,唯一的問題是,這個div裏面我還有其他的元素,並單擊它們也關閉#myDiv。我想要它,所以點擊這個div內的任何內容都不會觸發隱藏。在四處搜索後,我在這裏找到了關於如何使用jQuery執行此操作的答案:https://stackoverflow.com/a/12222263/548524。然而,我似乎無法在Prototype中得到這個工作,並且顯然()在這裏是無效的。

任何幫助,非常感謝!

回答

1

使用 '向上' 功能:

$(document.body).observe('click', function(e){ 
    if(e.target.id != 'myDiv' && !$(e.target.id).up('#myDiv')) { 
     $('myDiv').hide(); 
    } 
}); 
+0

感謝的方法,我明白它應該如何工作,但上面的代碼會拋出一個錯誤:無法調用null的方法'up'。還嘗試使用$(e.target.id).up()!='myDiv',但我得到相同的錯誤,所以不確定是否缺少語法中的某些內容或爲什麼它不起作用。 – loreley

+0

@loreley,我想我犯了一個錯誤,更新了答案 –

+0

爲了獲得$(event.target).up()的id,我必須使用$(event.target).up()。readAttribute 'id')現在它可以工作,但.up()只選擇第一個祖先。 – loreley