Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery获取与类最接近的前一个元素_Jquery - Fatal编程技术网

使用jQuery获取与类最接近的前一个元素

使用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>

我已经研究了几个非常类似的问题,但没有得到这项工作。我拥有的是这个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="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');