jquery - Firefox 仅在使用 jQuery 时出现错误 - handleObj.handler.apply 不是函数

标签 jquery firefox

我正在开发一个插件来扩展 Dan Grossman 的范围选择器。 Here's my repo 。请原谅我困惑的代码,这仍然是一项正在进行的工作。我的问题是 Firefox 无法识别点击输入。 This is相关行:

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 也没有提示 - 到底是什么??

最佳答案

他们被委托(delegate)时是否有可用的范围?委托(delegate)的要点是定位一个您知道将始终存在且可见的元素,然后从那里委托(delegate)给在脚本的整个生命周期中可能出现和消失的元素。

试试这个:

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));

你身边有类似的事情发生吗?您粘贴的代码应该没问题。 I made a jsFiddle to try and isolate the issue.

关于jquery - Firefox 仅在使用 jQuery 时出现错误 - handleObj.handler.apply 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22588794/

相关文章:

javascript - JqTouch - 检测动画触发器

javascript - 如何在 jQuery animate 中使用队列?

html - 如何更改 Chrome 中 <audio> 元素的高度? (能够在 FF 中做得很好)

javascript - 可拖动的 div : behaves like an image on second drag

javascript - jQuery 加载与构建元素

jquery - Yii 让 jQuery 首先加载

javascript - 另一个 Action 结束后执行 Action

Firefox 不稳定的元素可见性

c# - iMacros (Firefox) 通过 C# 控制

css - 透视导致 Firefox 溢出错误