我正在尝试进一步理解遍历并正确使用$(this)
。
我理解$(this)
用于引用上下文。但是,假设我有三个彼此相同的项目(按HTML方式),如果用户点击输入,我希望事件不仅发生在用户选择的项目上,而且能够访问父元素".item"
也是如此。这样,我可以隐藏".item"
中的其他元素,因为上下文将是用户点击的"input"
。
这是我感到困惑的地方。当用户点击输入($('input').on('click', doSomething);
)时,我仅限于输入的上下文 - 输入中没有任何内容,所以我想访问输入上下文之外的其他元素。
然后我尝试使用$(this)
说我只希望这个事件只发生在这个项目上,不会影响所有项目。
以下是代码示例:JSFIDDLE
我已经尝试过对此进行研究,但是我找不到这样的实例的大量信息,所以希望这也可以使其他人受益。我可以随意对内容/标题进行编辑。
答案 0 :(得分:8)
获取jQuery集中元素的直接父元素:parent
。 (如果你的集合只有一个元素,就像$(this)
那样,它将为你提供该元素的直接父元素。)
在与给定选择器匹配的jQuery集中查找与元素最接近的元素,从当前元素开始:closest
。 (如果你的集合只有一个元素,就像$(this)
那样,它将为你提供第一个匹配选择器的元素,从那个元素开始,然后查看它的父元素,然后它的父元素,等)
答案 1 :(得分:1)
这应该是您的点击处理程序代码:
function doSomething(event) {
$(event.target).parent().find('ul').hide();
}