假设我有两个这样的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);
});
但是返回undefined
请帮助
答案 0 :(得分: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
。
答案 1 :(得分:1)
这是因为this
的范围是.myDiv .submit_btn
,而在那里,textarea不存在。也许尝试this.parentNode
作为范围。
答案 2 :(得分:0)
所以,如果你想获得textarea,为什么不简单地这样做
$('.submit_btn').on('click',function(){
var myTextarea= $(this).siblings(".info_box");
});