【问题标题】:Error: Cannot read property 'blur' of undefined [duplicate]错误:无法读取未定义的属性“模糊”[重复]
【发布时间】:2016-03-21 22:02:13
【问题描述】:

我正在尝试实现wheelColorPicker,但我在使用 1.7.1 之后的 JQuery 版本时遇到了一个问题only。 (我目前使用的是 1.10.2。)

当我使用更高版本并移动任何滑块,然后停止移动它(mouseUp)时,colorPicker 不会注册 mouseUp,因此会继续移动滑块(或拖动器)。移动时我也收到以下错误:

未捕获的类型错误:无法读取未定义的属性“模糊”

我认为我必须更改的主要内容是事件如何解除绑定。

var blurEvents = $input.data('events').blur;

不工作:

JSFiddle

工作:

JSFiddle

(我无法让它使用带有代码 sn-p 的外部文件,而且问题是有多少字符的限制。这就是我没有包含代码 sn-p 的原因。)

【问题讨论】:

标签: javascript jquery


【解决方案1】:

$(element).data("events") 在 jQuery 1.8 中被移除。

如有必要,您仍然可以通过$._data(element, "events") 访问它,尽管这不受官方支持,并且可以随时修改或删除该行为(如您所见)。

http://blog.jquery.com/2012/08/09/jquery-1-8-released/

$(element).data(“events”):在 1.6 版本中,jQuery 将其内部数据与用户数据分离,以防止名称冲突。但是,有些人正在使用内部未记录的“事件”数据结构,因此我们仍然可以通过 .data() 检索它。这现在在 1.8 中被删除,但您仍然可以通过 $._data(element, "events") 获取事件数据以进行调试。请注意,这不是受支持的公共接口;实际数据结构可能因版本而异。

从 jQuery 1.9 开始,似乎不支持检索此数据的公共接口:

https://jquery.com/upgrade-guide/1.9/

在 1.9 之前,如果没有其他代码定义了名为“events”的数据元素,.data("events") 可用于检索元素的 jQuery 未记录的内部事件数据结构。这种特殊情况已在 1.9 中删除。没有公共接口来检索这个内部数据结构,并且它仍然没有记录。但是,jQuery Migrate 插件为依赖它的代码恢复了这种行为。

【讨论】:

  • 感谢您的回答!那很快! :) 是否有更新的、支持的执行方式?
  • 虽然a lot of people seem to be using _data anyway,但快速搜索并没有产生任何官方信息。嗯。
  • answer 更下方表明不存在替代方案。
  • 谢谢!那么这是否是正确的做法(使用上面的代码)? var blurEvents = $._data($input, 'events').blur
  • 除非你使用 jQuery Migrate 插件,否则它看起来已经差不多了。
猜你喜欢
  • 2019-03-20
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 2021-02-25
  • 2019-08-04
  • 1970-01-01
  • 2020-10-15
相关资源
最近更新 更多