1

假设我有两个这样的 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');
});

请注意,如果您的 jQuery 版本比 1.7 更新,最好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 回答