选择几个元素jQuery

时间:2012-08-10 21:39:32

标签: jquery html css forms jquery-selectors

我对jQuery很陌生,所以如果这听起来很愚蠢,请不要跳我。我想知道是否有办法选择“#ammountbest2”,“输入”和里面的“textarea”,以便我可以一次隐藏和清除所有值,只有一个选择器,所以我不知道必须拼出每一个。像兄弟姐妹或父母一样的东西。有了这个,我可以在最后附上:“。val('')。css('display',none')”

$('#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>

4 个答案:

答案 0 :(得分:4)

最简单的方法是在一个jQuery对象中指定两个对象:

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

当然,您可以使用:

$('#ammountbest2').children()

已编辑以回应OP的评论:

  

我不想要第一个选项的原因是代码变得很大,因为我有7个div,就像填充了输入和txtarea一样,都必须立即隐藏和清除。

要根据上面发布的HTML选择多个元素,假设格式保持可预测且一致,我建议:

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

(根据OP的原始问题,编辑故意拼写单词ammount(原文如此)。)

参考文献:

答案 1 :(得分:2)

使用课程。

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

并使用像这样的jquery选择器

$('.amountbest');
祝你好运!

答案 2 :(得分:0)

是的,你可以用逗号分隔多个选择器。试试这个:

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

答案 3 :(得分:0)

您可以使用,分隔选择器。这将分别运行每个选择器并将所有结果收集到jQuery对象中。我可以看到你已经这样做了,但你有一个可能导致问题的尾随逗号:

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

你也错过了一个结束单引号,加上另一个尾随逗号。

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