2013-10-27 64 views
0

我想進一步瞭解遍歷和正確使用$(this)

我明白$(this)用於參考上下文。但是,假設我有三個相互相同的項目(HTML方式),並且如果用戶單擊一個輸入,我希望這些事件不僅發生在用戶選擇的項目上,而且還能夠訪問父元素".item"。這樣,我就可以隱藏".item"中的其他元素,因爲上下文將是用戶單擊的"input"

這是我困惑的地方。當用戶點擊輸入($('input').on('click', doSomething);)時,我受限於輸入的上下文 - 輸入內沒有任何內容,所以我想訪問超出輸入上下文的其他元素。

然後我嘗試並使用$(this)來說我只想讓THIS事件發生只對這個項目,不影響所有項目。

這裏是一個代碼示例:JSFIDDLE

我試圖研究這個,我無法找到這樣的實例太多的信息,所以希望這可能也有益於他人。隨意對內容/標題進行編輯,因爲我試圖儘可能具體。

+4

['parent'(http://api.jquery.com/parent/) – kalley

+1

$(本).parent()? http://api.jquery.com/parent/ –

+3

*「我試過研究這個,但是我找不到像這樣的實例的很多信息」*我很抱歉,但沒有。如果你花一個小時(這就是所需要的)閱讀[API文檔](http://api.jquery.com),你會發現你需要的信息。 –

回答

8

要獲取jQuery集中元素的直接父級:parent。 (如果你的集合只有一個元素,就像$(this)那樣,那會給你那個元素的直接父對象)。

要找到與給定選擇器匹配的jQuery集合中元素的最接近的元素,從當前元素開始:closest。 (如果你的設置只有一個元素,$(this)意願,這將使你開始與一個元素的選擇相匹配的第一個元素,然後看着它的父,然後父母等)

1

這應該是你的點擊處理程序代碼:

function doSomething(event) { 
    $(event.target).parent().find('ul').hide(); 
}