私は次のHTMLフォームを持っています:-
<form id="subform">
<p>
<input type="button" id="btn" value="Go!"/>
</p>
<p>
<select id="optlist">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
</p>
</form>
そして、次の jQuery スニペット:-
$("#btn").click(function () {
// if address select list is visible slide it up and then slide down new <p> tag
if ($('#optlist').is(":visible")) {
$('form > p:nth-child(2)').slideUp('slow', function () {
$('<p id="noresults">No results found</p>').insertAfter('form > p:nth-child(2)').hide().slideDown("slow");
});
}
// else if select list is not visible just slide down the new <p> tag
else {
$('<p id="noresults">No results found</p>').insertAfter('form > p:nth-child(2)').hide().slideDown("slow");
}
});
私がやりたいことは、#optlist
現在表示されている場合は新しいslideUp()
タグ、それ以外の場合は新しいタグです (現在非表示の場合)。slideDown()
<p>
slideDown()
<p>
#optlist
上記では問題なく動作しますが、少し不格好ですが、たとえば、ステートメントとステートメント<p>
の両方でnew の挿入を繰り返さなければなりません。if
else
また、これに加えて、小さなバグがあります。#noresults <p>
タグが既に存在する場合、現在別のタグが追加され#noresults
ます。既に存在する場合、現在のフラッシュを取得するにはどうすればよいですか?
を使用して存在するかどうかを確認できますが、if ( $("#noresults").length ) {};
これを繰り返す必要もあります ( if
and でelse
)。
new のチェックと作成を<p>
関数に入れ、それを呼び出すことができました。
現在のコードを構造化するより良い方法はありますか?
ここでフィドル