如何只附加一次ajax数据?

时间:2012-10-05 02:55:09

标签: javascript jquery

当用户选择下拉菜单时,我试图将新返回的数据附加到我的选择标记

obj.prototype.getText=function(){
    codes....
    call ajax....

             ajax.callback=function(data){
                   $('#option').append(data);
            }

        }

$('#dropdown').on('change', function(){
    obj.getText()
})

我的问题是,我只想在用户第一次点击下拉菜单时附加数据。 只要用户不断点击下拉菜单,我的代码就会向#option附加更多相同的数据......

有没有解决这个问题?非常感谢。

4 个答案:

答案 0 :(得分:3)

使用.one()代替.on()。一旦触发事件,它就会解除绑定:

$('#dropdown').one('change', obj.getText);

答案 1 :(得分:1)

你可以简单地删除on change事件,因此不再触发它。

$('#dropdown').off('change');

我还会研究“运行一次”命令的概念。这不是我在这里推荐的,但是往前走,这是一件很酷的事情。 underscore.js does it well

答案 2 :(得分:0)

您需要转发off处理程序。

像这样的东西。

$('#dropdown').on('change', function(){
    obj.getText()
    $('#dropdown').off('change');
})

答案 3 :(得分:0)

这可能是最好的方法,转向事件处理程序,或者你总是可以在隐藏字段中存储bool值,比如

       <input type="hidden" id="hidAleadyAppended" />

然后在附加一次后将其设置为true。

这种方式如果你需要知道它是否已经在其他代码中附加了,那么这是一种快速可靠的检查方法