1

私がこのような2つのdivを持っているとしましょう:

<div class="myDiv">
    <textarea class="info_box" attribute="first" rows="4" cols="40">Enter text here...</textarea>
    <button class="submit_btn">Click me!</button>
</div>

<div class="myDiv">
    <textarea class="info_box" attribute="second" rows="4" cols="40">Enter text here...</textarea>
    <button class="submit_btn">Click me!</button>
</div>

ボタン「submit_btn」をクリックしたときに、各div内のtextareaを取得できるようにしたいと思います。私はこのようなことを試みました:

$('body').delegate('.myDiv .submit_btn', 'click', function(){
    var myTextarea = $('.info_box', this);
});

しかし、それは未定義を返します

助けてください

4

3 に答える 3

2

あなたはこれを行うことができます :

$('body').delegate('.myDiv .submit_btn', 'click', function(){
    var myTextarea = $(this).closest('myDiv').find('.info_box');
});

別の解決策:

$('body').delegate('.myDiv .submit_btn', 'click', function(){
    var myTextarea = $(this).siblings('.info_box');
});

1.7より新しいバージョンのjQueryを使用している場合は、のon代わりにを使用することをお勧めしますdelegate

于 2013-03-24T21:11:35.370 に答える
1

これは、thisスコープが.myDiv .submit_btnその内部にあるため、textareaが存在しないためです。おそらくthis.parentNodeスコープとして試してみてください。

于 2013-03-24T21:12:00.187 に答える
0

したがって、textareaを取得したい場合は、単にこれを実行してみませんか

$('.submit_btn').on('click',function(){
     var myTextarea= $(this).siblings(".info_box");
});

フィドル

于 2013-03-24T21:16:45.507 に答える