2

私は jQuery にまったく慣れていないので、これがばかげているように聞こえても、ジャンプしないでください。「#ammountbest2」、「入力」、およびその中の「テキストエリア」を選択して、内部の値を一度に非表示にしてクリアできる方法があるかどうかを知りたいので、1つのセレクターを使用しないでくださいすべてを綴る必要があります。兄弟や両親のようなもの。それで、最後に「.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

4 に答える 4

5

最も簡単な方法は、1 つの jQuery オブジェクトで両方のオブジェクトを指定することです。

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

もちろん、代わりに次を使用できます。

$('#ammountbest2').children()

OPからのコメントに応じて編集:

最初のオプションが必要ない理由は、入力と txtarea で満たされたような 7 つの div があるため、コードが巨大になるためです。これらはすべて一度に非表示にしてクリアする必要があります。

上記の投稿された HTML に基づいて複数の要素を選択するには、フォーマットが予測可能で一貫していると仮定して、次のことをお勧めします。

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

ammount( OPの元の質問に従って、単語(sic)のスペルを意図的に間違えるように編集されました。)

参考文献:

于 2012-08-10T21:42:13.423 に答える
2

クラスを使用します。

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

そして、このようにjqueryセレクターを使用します

$('.amountbest');

幸運を !

于 2012-08-10T21:47:20.450 に答える
0

はい、コンマで区切って複数のセレクターを指定できます。これを試して:

$("#ammountbest1,#ammountbest1 input,#ammountbest1 textarea")
于 2012-08-10T21:42:27.793 に答える
0

セレクターは . で区切ることができます,。これにより、各セレクターが個別に実行され、すべての結果が jQuery オブジェクトに収集されます。すでにそれを行っていることがわかりますが、問題を引き起こしている可能性のある末尾のコンマがあります。

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

また、終了の一重引用符と、別の末尾のコンマも見逃しています。

$('#ammountbest2,).css('display', 'none');
                ^ here
于 2012-08-10T21:44:29.520 に答える