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

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 に答える
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 に答える
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たいかもしれませんが、おそらくidこの場合はトリガーを一意にするために a を使用する必要があることに注意してください。これにクラスを使用すると、大規模なサイトで大きな問題が発生する可能性があります。

于 2013-09-25T19:52:00.000 に答える