不一致的 jQuery 每个() 行为与无法解释的修复
Inconsistent jQuery each() behavior with unexplainable fix
我正在为基于类的CoffeeScript jQuery插件编写一个基于这个方便的模板的插件:https://gist.github.com/rjz/3610858
一切都很好。但是,当我注册插件时,最后会出现一些意外行为:
$.fn.extend markdownAsides: (option, args...) ->
@each ->
$this = $(this)
data = $this.data('markdownAsides')
if not data?
$this.data 'markdownAsides', (data = new MarkdownAsides(this, option))
if typeof option is 'string'
data[option].apply(data, args)
data # Plugin breaks without this line
在我添加最后一行(我纯粹是偶然发现的解决方案)之前,插件的初始构造工作正常,但在连续的方法调用中,jQuery each
循环有时无法遍历每个元素。
检查each
循环外部的this.size()
返回正确的值,检查循环外部的各个元素看起来也很好。但是在循环中,元素有时会被跳过,以一种我无法辨别的模式。
就像我说的,通过添加最后一行可以解决问题。(也许传递给each
的函数的返回值以某种方式很重要?我的问题不是"我该如何解决这个问题?"而是"为什么会这样?"
从传递给each
的回调函数返回 false 将脱离循环。我还没有验证,但也许 jQuery 也会破坏除 undefined
之外的任何错误值。
由于在 CoffeeScript 中有一个隐式返回,因此您可能会从回调中返回一些错误甚至错误的东西,具体取决于在其中执行的操作。
为避免任何问题,只需在最后更改data
true
即可。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 无法从jquery Mobile导航栏重定向到另一个页面
- 为什么我根本无法让 jquery 可见插件工作
- 无法在jquery中向上或向下移动列表中的多个项目
- HTML 按钮点击函数无法使用 jQuery 变量作为参数
- CORS故障无法解决jquery,laravel5.2
- 限制文件类型,大小,单次上传不'无法在jquery文件上传中工作
- 无法解释的JavaScript行为-错误
- 无法通过JQuery更改图像的src
- datepicker()在我的页面中无法使用jquery
- 无法使用jQuery更改输入的值
- 无法识别jQuery表达式
- 无法使用jQuery从表中删除行
- Mapbox,无法在jquery回调中设置GeoJSON
- 无法使用jquery克隆没有文本的段落
- 无法使用jQuery自定义内容滚动条将自定义滚动条添加到iframe
- Javascript和Firefox中基于jQuery的HTML解析:无法解释行为
- 不一致的 jQuery 每个() 行为与无法解释的修复
- 滚动动画的jQuery错误无法解释
- 无法解释的jquery错误