【问题标题】:jQuery: Append once and stop (worked in older versions)jQuery:追加一次并停止(在旧版本中工作)
【发布时间】:2011-02-08 23:07:17
【问题描述】:

这是我正在使用的代码:

$(function(){
    $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() {
        $('#main').append(this);
    });
});
}

现在,当我触发函数(在输入框中使用 keyup)时,加载的 div 会在每个 keyup 事件上一遍又一遍地附加。

我使用的是 jQuery 1.5 - 在旧版本中,即 1.2.6,第一次后没有附加 div,它工作正常(错误?)。

如何防止 div 被一遍又一遍地附加? (不幸的是,禁用“触发器”不是一个选项。)我也尝试了 appendTo,这几乎是同样的问题。

请有人帮助我!非常感谢

【问题讨论】:

  • 只需将 load 调用包装在条件检查中以查看 div#info 是否已经存在。
  • 您可以将数据添加到您的主 div 以检查 div 是否已加载,并且在该事件中什么也不做。

标签: jquery append appendto


【解决方案1】:

听起来您可以使用.one 绑定您的keyup 处理程序:

$('whatever').one('keyup', function() {
    $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() {
        $('#main').append(this);
    });
});

.one 函数的作用与 .bind 类似,只是它在执行一次后会自行解除绑定。

【讨论】:

    【解决方案2】:

    使用

    $(function(){
       if($("#info").length==0)
       {
          $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() {
            $('#main').append(this);
          });
       }
    });
    }
    

    假设“#info”是动态添加的。

    【讨论】:

    • 这永远不会完成。你的意思是length==0
    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    相关资源
    最近更新 更多