2013-03-24 173 views
1

让我们说我有两个div像这样:jQuery的这种情况下

<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> 

我希望能够得到各专区内textarea的当我点击我的按钮“的submit_btn”。我想是这样的:

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

但是,返回undefined

任何帮助,请

回答

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

这是因为this的作用域为.myDiv .submit_btn,并且在那里,textarea不存在。也许试试this.parentNode作为范围。

0

所以,如果你想获得textarea的,何不干脆做

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

fiddle