使用jQuery获取与类最接近的前一个元素
我已经研究了几个非常类似的问题,但没有得到这项工作。我拥有的是这个DOM结构:使用jQuery获取与类最接近的前一个元素,jquery,Jquery,我已经研究了几个非常类似的问题,但没有得到这项工作。我拥有的是这个DOM结构: <div class="container"> <input class="selected"/> <div class="dropdown-wrapper ae-hide"> <div class="selectable">1</div> <div class="selectable">2</div>
<div class="container">
<input class="selected"/>
<div class="dropdown-wrapper ae-hide">
<div class="selectable">1</div>
<div class="selectable">2</div>
<div class="selectable">3</div>
</div>
</div>
单击任何.selective时,我希望更新输入值。问题是我找不到正确的选择器来执行此操作。这是动态创建的,所以我可以在我的页面上有多个像这样的html片段,这就是我使用类的原因
以下是查找元素的一种方法:
$( ".selectable" ).parent().parent().find('input').val('somevalue');
$( ".selected" ).each(function(index) {
$(this).on("click", function(){
This is multiple elements have their own function
//var somevalue = $(this).attr('id');
});
});
是同级选择器,因此您需要在dom中与输入元素处于同一级别
您将要做的第一件事是使用类下拉包装器获取祖先,在这种情况下,您也可以使用父级,但如果您更改了dom结构,则“最近”更灵活。根据这个结果,你将调用你的prev
JS代码中倒数第二行应该是:
$(this).parent().prev('.selected').val('hit');
你想根据我的理解来称呼前一位家长吗
谢谢我最终设法用parent自己做了这件事,但很高兴知道在这种情况下,最好使用“最近的”。@Leron和“最近的”代码在您将标记更改为1的情况下仍然有效。它清楚地向读者解释了,你不是在寻找父元素,而是在寻找.dropdown wrapper祖先,它可以是父元素,但不需要是父元素。这并不能解决问题,如何为单击的元素找到正确的输入元素。
$(this).parent().prev('.selected').val('hit');