1

我动态生成的代码如下所示:

<div class="container">
      <div class="item_a">
             TEST
      </div>
      <div class="item_b">
             TEST 2
      </div>

</div>

<div class="trigger_div">
      Click Me
</div>




<div class="container">
      <div class="item_a">
             TEST
      </div>
      <div class="item_b">
             TEST 2
      </div>

</div>

<div class="trigger_div">
      Click Me
</div>




<div class="container">
      <div class="item_a">
             TEST
      </div>
      <div class="item_b">
             TEST 2
      </div>

</div>

<div class="trigger_div">
      Click Me
</div>

这就是我尝试使用 jquery 选择器获取值的方式:

$(".trigger_div").on('click', function () {
         var item_a = $(this).closest(".container").children(".item_a");
         var item_b = $(this).closest(".container").children(".item_b");
    });

我得到了 item_a 和 item_b 的未定义值。我希望能够在“trigger_div”之前的 div 的“item_a”和“item_b”字段中获取值

4

4 回答 4

2

您需要使用.prev(),而不是.closest()因为您正在寻找兄弟姐妹而不是祖先,并且最接近祖先。

$(".trigger_div").on('click', function () {
    var item_a = $(this).prev(".container").find(".item_a").html();
    var item_b = $(this).prev(".container").find(".item_b").html();
    console.log(item_a, item_b);
});

jsFiddle 示例

参考:

于 2013-09-25T19:55:31.230 回答
2

试试 this.prev().children

$(".trigger_div").on('click', function () {
    var item_a = $(this).prev().children("item_a");
    var item_b = $(this).prev().children("item_b");
});
于 2013-09-25T19:53:31.193 回答
2

.closest找到你的选择器的祖先,你想使用.prev()并指定一个元素:

$(".trigger_div").on('click', function () {
     var item_a = $(this).prev(".container").children(".item_a");
     var item_b = $(this).prev(".container").children(".item_b");
});
于 2013-09-25T19:54:08.560 回答
1

你忘记了.类选择器,你使用.closest而不是.prev这样写

$("#clear_filter_btn").on('click', function () {
     var item_a = $(this).prev(".container").children(".item_a");
     var item_b = $(this).prev(".container").children(".item_b");
});

它应该可以工作。

.html()另外,您没有像这样抓住他们的“价值”(innerHTML)添加

var item_a = $(this).prev(".container").children(".item_a").html();

编辑

当您更改为时#clear_filter_btn.trigger_div您可能也想在上面的代码中进行更改,但请注意,在这种情况下您可能希望使用 aid来使触发器唯一,为此使用类可能会在大型站点中导致大问题。

于 2013-09-25T19:52:00.000 回答