我有以下的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