<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/

10-12 13:00
查看更多