2013-10-27 201 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(); 
}