0

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

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

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

        }

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

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

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

4

4 回答 4

3

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

$('#dropdown').one('change', obj.getText);
于 2012-10-05T02:59:52.740 回答
1

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

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

我还会研究“运行一次”命令的概念。这不是我在这里真正推荐的,但展望未来,知道这是一件很酷的事情。underscore.js做得很好

于 2012-10-05T02:58:23.113 回答
0

您需要关闭处理程序。

像这样的东西。

$('#dropdown').on('change', function(){
    obj.getText()
    $('#dropdown').off('change');
})
于 2012-10-05T02:57:31.590 回答
0

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

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

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

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

于 2012-10-05T02:59:58.313 回答