2012-08-10 157 views
1

我對jQuery很新,所以如果這聽起來很愚蠢,請不要跳我。我想知道是否有辦法在裏面選擇「#ammountbest2」,「輸入」和「textarea」,這樣我就可以一次隱藏和清除所有值,只用一個選擇器,所以我不會必須說明每一個。像兄弟姐妹或父母一樣。隨着我可以只重視結尾:」 .VAL(‘’)。CSS(‘顯示’,沒有')」選擇幾個元素jQuery

$('#ammountbest').change(function() { 
var ammountbest = "" 

$('#ammountbest option:selected').each(function() { 
    ammountbest += $(this).text() + "";}); 


if(ammountbest == "0") {$('#ammountbest1,#ammountbest2').css('display', 'none');} 
if(ammountbest == "1") { 
    $('#ammountbest1').css('display', 'block'); 
    $('#ammountbest2 input,#ammountbest2 textarea').val(''); 
    $('#ammountbest2').css('display', 'none'); 
    } 
if(ammountbest == "2") { 
    $('#ammountbest1,#ammountbest2').css('display', 'block'); 
    } 
}) 
.trigger('change'); 



<select id="ammountbest"> 
    <option>0</option> 
    <option>1</option> 
    <option>2</option> 
</select> 

<!-- 1 Winners --> 
<div id="ammountbest1" style="display:none;"> 
<label for="besttitle1" title="Title">Title 01:</label><br> 
<input name="besttitle1" id="besttitle1" size="30" type="input"> 
<label for="bestschool1" title="School">School 01:</label><br> 
<input name="bestschool1" id="bestschool1" size="30" type="input"> 
<label for="bestvideo1" title="Video">Video Embed Code 01:</label><br> 
<textarea name="bestvideo1" id="bestvideo1" cols="30" rows="5"></textarea> 
</div> 

<!-- 2 Winners --> 
<div id="ammountbest2" style="display:none;"> 
<label for="besttitle2" title="Title">Title 02:</label><br> 
<input name="besttitle2" id="besttitle2" size="30" type="input"> 
<label for="bestschool2" title="School">School 02:</label><br> 
<input name="bestschool2" id="bestschool2" size="30" type="input"> 
<label for="bestvideo2" title="Video">Video Embed Code 02:</label><br> 
<textarea name="bestvideo2" id="bestvideo2" cols="30" rows="5"></textarea> 
</div> 
+0

你想要'#amountbest2'元素以及'input'和'textarea'嗎? – 2012-08-10 21:44:49

+0

是的,我想一次選擇div中的所有元素。 – 2012-08-10 21:47:09

回答

4

最簡單的方法是簡單地指定一個jQuery對象兩個對象:

$('#ammountbest2 input, #ammountbest2 textarea') 

你可以,當然,使用代替:

$('#ammountbest2').children() 

響應共同編輯從OP:

我不想第一個選項的原因是,代碼變得巨大,因爲我有7個像填充輸入和txtarea的div,它們必須一次隱藏並清除。

要選擇基於上述發佈HTML多種元素,假設格式保持可預測的一致,我建議:

$('div[id^=ammountbest]').children('input, textarea').val('').andSelf().hide() 

(編輯,以故意錯拼單詞ammount(原文如此)按業務方案的原來的問題)

參考文獻:

+0

我不想要第一個選項的原因是代碼變得很大,因爲我有7個div,就像那些填充了輸入和txtarea的div,它們必須一次隱藏並清除。 – 2012-08-10 21:45:58

+0

檢查編輯。我認爲最後發佈的建議應該更符合您的需求。 – 2012-08-10 21:48:38

+0

是不是更像#ammountbest2>輸入的孩子? '.find()'似乎是一個更好的選擇? – voigtan 2012-08-10 21:54:01

0

是的,你可以用逗號分隔它們來指定多個選擇器。試試這個:

$("#ammountbest1,#ammountbest1 input,#ammountbest1 textarea") 
0

你可以用,分開選擇器。這將分別運行每個選擇器並將所有結果收集在jQuery對象中。我可以看到你已經這樣做,但你有一個尾隨逗號可能導致問題:

$('#ammountbest2 input,#ammountbest2 textarea,').val(''); 
              ^there 

你也錯過了收單引號,加上又是結尾的逗號。

$('#ammountbest2,).css('display', 'none'); 
       ^here 
+0

昏迷只是從剪切和粘貼到問題。不是手頭的問題。 – 2012-08-10 21:50:44

2

使用類。

<div id="ammountbest1" class="amountbest" style="display:none;"> 
<div id="ammountbest2" class="amountbest" style="display:none;"> 

而且使用jQuery選擇這樣

$('.amountbest'); 

祝你好運!