考虑以下代码:
<div id="thediv" >hola</div>
<button id="resharper">button</button>
使用javascript/jquery:
$("button").on( 'click', function() {
$("#thediv").show();
alert('click');
});
$(document).ready(function(){
$("#thediv").hide();
})
我希望行为首先显示DIV标签,然后显示警报"单击"。相反,行为以相反的方式起作用。警报文本首先显示,然后显示按钮可见。我想念什么吗?
我可以以某种方式修改代码以获取首先显示DIV的所需行为,然后闪烁警报文本。
在jquery.show(选项(中检查是否允许您传递PlainObject选项。
,您可以使用 complete
:一旦元素上的动画完成。
代码:
$("button").on( 'click', function() {
$("#thediv").show({
complete: function() {
alert('click');
}
});
});
$(document).ready(function(){
$("#thediv").hide();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="thediv" >hola</div>
<button id="resharper">button</button>
with javascript/jQuery:
这是因为alert()
阻止了UI线程更新,并且该线程尚未有时间在DOM中显示元素,然后再调用alert()
。
理想情况下,您应该使用console.log()
进行调试,但是可以通过将alert()
放在setTimeout()
中以非常短的延迟来避免此问题。
$("button").on( 'click', function() {
$("#thediv").show();
setTimeout(function() {
alert('click');
}, 10);
});
#thediv { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="thediv" >hola</div>
<button id="resharper">button</button>
with javascript/jQuery:
$("button").on('click', function() {
$("#thediv").show("slow", callback);
});
$(document).ready(function() {
$("#thediv").hide();
})
function callback() {
alert('click');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="thediv">hola</div>
<button id="resharper">button</button>
- 将参数添加到
.show()