Javascript 如何只附加一次ajax数据?

Javascript 如何只附加一次ajax数据?,javascript,jquery,Javascript,Jquery,当用户选择下拉菜单时,我试图将新返回的数据附加到我的选择标记 obj.prototype.getText=function(){ codes.... call ajax.... ajax.callback=function(data){ $('#option').append(data); } } $('#dropdown').on('change', function(

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

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

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

        }

$('#dropdown').on('change', function(){
    obj.getText()
})
我的问题是,我只想在用户第一次单击下拉菜单时添加数据。 只要用户继续单击下拉菜单,“我的代码”将继续向“我的#选项”添加更多相同的数据

有办法解决这个问题吗?非常感谢

您需要转动处理器

像这样的

$('#dropdown').on('change', function(){
    obj.getText()
    $('#dropdown').off('change');
})
你需要转动手柄

像这样的

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

您可以简单地删除on change事件,这样它就不再被触发

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

我还将研究“运行一次”命令的概念。这并不是我在这里要推荐的,但展望未来,这是一件很酷的事情。Underline.js

您只需删除更改时事件,它就不再被触发

$('#dropdown').off('change');
我还将研究“运行一次”命令的概念。这并不是我在这里要推荐的,但展望未来,这是一件很酷的事情。Underline.js

使用
.one()
而不是
.on()
。一旦触发事件一次,它就会自动解除绑定:

$('#dropdown').one('change', obj.getText);
使用
.one()
而不是
.on()
。一旦触发事件一次,它就会自动解除绑定:

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

这可能是最好的方法,事件处理程序,或者您可以始终在隐藏字段中存储bool值,如

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

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


如果您需要知道它是否已经附加到其他代码中,那么这种方法是一种快速可靠的检查方法,这可能是最好的方法,即打开事件处理程序,或者您可以始终在隐藏字段中存储bool值,如

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

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


这样,如果您需要知道它是否已经附加到其他代码中,这是一种快速可靠的检查方法

Hah,这里我推荐一个一次/一次风格的函数,但是对于coure,jQuery内置了它:)+1you@Bartek当前位置那没什么错。只有一行代码不同。哈,这里我推荐一个一次/一次风格的函数,但是对于coure,jQuery内置了它:)+1you@Bartek当前位置那没什么错。只有一行代码不同。