2013-03-24 297 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