从处理程序中的事件解除绑定

时间:2014-07-14 11:09:28

标签: javascript jquery

每次输入成为焦点时,我都会使用iScroll自动滚动。但是,在android上,蓝色指针在文档滚动时保持冻结状态。因此,我需要从元素中取消聚焦,滚动,然后再次聚焦而不调用处理程序。

我有一个功能,可以在所有输入和未来输入成为焦点时进行监听。

    this.inputFocusListener = function () {
        var self = this;

        $(document).on("focus", "input", this.bindFocusHandler.bind(this));

    },

我使用上面的.bind(this)来更改此上下文,因为我将在处理程序中调用的父级中有其他方法。

一旦进入处理程序,我想从处理程序取消绑定,然后调用blur()从输入元素取消聚焦,然后我自动向上滚动向下,然后在滚动后再次聚焦但没有调用处理程序:

   this.bindFocusHandler = function (e) {


           $(e.currentTarget).off('focus...');
           $(e.currentTarget).blur();

           ....scroll up/down...

           //now focus again on the input without calling handler
           $(e.currentTarget).focus();

   },

但是当我再次调用焦点时,我进入了一个infinte循环,因为我无法解除该元素的焦点事件...

0 个答案:

没有答案