我有以下的HTML表單: -jQuery的效果基本show元素A如果可見然後了slideDown元素B
<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()
THEN slideDown()
一個新的<p>
標記,否則只是slideDown()
一個新的<p>
標記(如果#optlist
當前隱藏)。
這很好地工作在上面,雖然它有點笨重,例如我必須在if
和else
語句中重複插入新的<p>
。
此外,除此之外,還有一個小錯誤,如果#noresults <p>
標記已經存在,它目前會添加另一個,我怎麼能得到它閃爍當前#noresults
如果它已經存在?
我可以檢查它是否存在使用if ($("#noresults").length) {};
,但我也需要重複這一點(在if
和else
)。
我可以在一個函數中檢查和創建新的<p>
並調用它。
有沒有更好的方法來構造當前的代碼?
小提琴here