仅使用jQuery的Firefox错误 - handleObj.handler.apply不是一个函数

yuv*_*uvi 7 firefox jquery

我正在开发一个扩展Dan Grossman的测距仪的插件.这是我的回购.请原谅我的杂乱代码,这仍然是一项正在进行中的工作.我的问题是Firefox无法识别点击输入.这是相关的:

this.container.find('.ranges')
    .on('click', 
        '.daterangepicker_start_input, .daterangepicker_end_input',   
        $.proxy(this.focusInput, this));
Run Code Online (Sandbox Code Playgroud)

现在函数focusInput本身并不重要,真的,因为我console.log在它的顶部添加了一个简单的,很明显它根本没有运行(添加断点也没有帮助).

我认为这可能是因为我正在使用禁用输入,但更改它没有帮助(并且它不应该是一个问题,因为事件是通过父元素捕获的).

我从Firefox控制台获得的错误消息是:

TypeError: handleObj.handler.apply is not a function       jquery-1.11.0.js:4995
TypeError: handleObj.handler.apply is not a function       jquery-1.11.0.js:4624
Run Code Online (Sandbox Code Playgroud)

这告诉我问题是jQuery(我很难相信).我猜我做错了导致jQuery出错,但是由于Chrome没有抱怨,我很难跟踪到底哪里出错了.

我很想得到一些帮助.提前致谢!

更新

我在github上更新了代码.现在点击不仅仅适用于最初隐藏的元素(呃...没有意义),但更重要的是 - 我根本没有收到任何错误.所以我被卡住了.我不知道FF的问题是什么.即使是Internet Explorer也没有抱怨 - 这到底是什么?

Sco*_*tux 6

委派给他们时是否有可用的范围?委托的目的是定位一个你知道将永远存在并且可见的元素,然后从那里委托给在整个生命周期中可能来来去去的元素.

试试这个:

this.container.on('click',
    '.ranges .daterangepicker_start_input, .ranges .daterangepicker_end_input',
    $.proxy(this.focusInput, this));
Run Code Online (Sandbox Code Playgroud)

更新:

如果我发出如下语法错误,我可以重现此问题:

$('.target').on('click', '.thing', $.proxy(this.doStuff), this);
Run Code Online (Sandbox Code Playgroud)

如果我移动,那么它按预期工作.

$('.target').on('click', '.thing', $.proxy(this.doStuff, this));
Run Code Online (Sandbox Code Playgroud)

你有类似的事情吗?粘贴它的代码应该没问题.我做了一个jsFiddle试图找出问题.