<input id='lightson' class="buttonl" type="button" value="On" />
<input id='lightsoff' class="buttonl" type="button" value="Off" />
<p class="status2"></p>
<script type="text/javascript">
$('#lightson').click( function(){
$.get('http://<?php echo $_SESSION['ip']?>/?2', {}, callbacka());
function callbacka(){
$('.status2').load('status2.php').delay(3000).queue(function() {
$(this).empty();
});
}
});
$( '#lightsoff' ).click( function () {
$.get('http://<?php echo $_SESSION['ip']?>/?3', {}, callbackb());
function callbackb(){
$('.status2').load('status3.php').delay(3000).queue(function() {
$(this).empty();
});
}
});
</script>
当我单击
lightson
时,我想将某些内容加载到div
中,并在三秒钟后将其清空。另外,当我单击lightsoff
时,我想加载其他内容,并在三秒钟后将其清空,因为两个按钮都使用相同的div
。此代码仅工作一次。当页面加载并且我单击两个按钮之一(与哪个按钮无关)时,它可以工作,但是如果我单击另一个按钮,它将在
div
中加载信息,但不会将其清空。目前适用的新代码是:
<input id='lightson' class="buttonl" type="button" value="On" />
<input id='lightsoff' class="buttonl" type="button" value="Off" />
<p class="status2"></p>
<script type="text/javascript">
$('#lightson').click(function(){
$.get('http://<?php echo $_SESSION['ip']?>/?2', {}, callbacka());
function callbacka() {
$('.status2').load('status2.php').delay(3000).queue(function(){
$('.status2').empty().dequeue();
});
}
});
$('#lightsoff').click( function () {
$.get('http://<?php echo $_SESSION['ip']?>/?3', {}, callbackb());
function callbackb(){
$('.status2').load('status3.php').delay(3000).queue(function() {
$('.status2').empty().dequeue();
});
}
});
</script>
上面的代码我想要的描述:我有两个按钮。当我单击其中的一个时,我想将值“ 2”发送到url并在类status2中发送以加载status2.php的内容,并在3秒后将类status2清空。依此类推,如果我单击其他按钮。我认为上面的代码可以完成工作。
如果单击按钮时从回调中删除“()”,则仅发送值“ 2”,其他都不会发生。
最佳答案
不要将()
放在callbacka
/ callbackb
之后。这将调用它们并将$.get
的回调设置为返回值(在您的情况下为undefined
)。
$.get( 'http://<?php echo $_SESSION['ip']?>/?2', {}, callbacka );
另外,
delay
仅适用于动画。要在load
完成后等待3秒钟,请在setTimeout
回调内使用load
。$('.status2').load('status2.php', function() {
var $this = $(this);
setTimeout(function(){
$this.empty();
}, 3000);
});
关于jquery - 我的jQuery排队函数在第一次后无法运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8627985/