2013-11-21 57 views
0

選擇選項首字母縮寫?是Textarea.someClass應滑下並顯示自己。我必須使用$(this),因爲頁面上會有幾個選擇選項和文本區域。

我已經嘗試了以下代碼的衆多變體,包括使用sibling(),但它不起作用。

<select class="initials"> 
<option value="no">Initials? No</option> 
<option value="yes">Initials? Yes</option> 
</select><br/> 
<textarea class="someClass">Put instructions here </textarea> 
<script type="text/javascript"> 
$('select.initials').change(function(){ 
    theVal = $(this).val(); 
    // alert(theVal); WORKING 
    if(theVal == 'yes') { 
     $(this).next('textarea.someClass').slideDown(); 
    }) 
</script> 

回答

1

你有一個BR之間,所以你next()不挑textarea的是旁邊的BR。所以請嘗試:

$(this).next().next('textarea.someClass').slideDown(); // 

或者使用下面的代碼,這樣它就不會有任何數量的元素進入它們之間。

$(this).nextUntil('textarea.someClass').next().slideDown(); 

或者只是給你的textarea一個顯示:塊。

.someClass{ 
    display:block; 
} 

並隱藏textarea啓動並刪除之間的br。

此外,您忘記了腳本中的右大括號。

$('select.initials').change(function(){ 
    theVal = $(this).val(); 
    // alert(theVal); WORKING 
    if(theVal == 'yes') { 
     $(this).next('textarea.someClass').slideDown(); 
    } //<--- Here 
}); 

你也可以簡單,如果你想腳本切換到:

$(this).next('textarea.someClass').slideToggle(this.value === "Yes"); 

Demo

1

fiddle Demo

$('select.initials').change(function() { 
    theVal = $(this).val(); 
    // alert(theVal); WORKING 
    if (theVal == 'yes') { 
     $(this).next().next('textarea.someClass').hide().slideDown(); 
    } 
}); 

使用

$(this).next().next('textarea.someClass') 

,你不關閉你的.change活動正常,你有錯別字有