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

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

this.container.find('.ranges') .on('click', '.daterangepicker_start_input, .daterangepicker_end_input', $.proxy(this.focusInput, this)); 

现在函数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 

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

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

更新

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

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

试试这个:

 this.container.on('click', '.ranges .daterangepicker_start_input, .ranges .daterangepicker_end_input', $.proxy(this.focusInput, this)); 

更新:

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

 $('.target').on('click', '.thing', $.proxy(this.doStuff), this); 

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

 $('.target').on('click', '.thing', $.proxy(this.doStuff, this)); 

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

当我意外地在下面键入错误的函数名doStuff时,我遇到了这个问题:

 $.proxy(this.doStuff, this) 

在我将其更改为正确名称后,问题得以解决。

我得错了语法错误。 下面是我从$(document).click(function(){ });转换函数时输入的代码$(document).click(function(){ });on('click')function,

我键入的语法错误,

 $(document).on('click',".removeDataTableItem").click(function(){ // code block }); 

代替

 $(document).on('click',".removeDataTableItem",function(){ // code block });