我正在为基于类的 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
在我添加最后一行之前(我偶然发现的一个解决方案),插件的初始构造运行良好,但在连续的方法调用中,jQueryeach
循环有时无法遍历每个元素。
this.size()
在循环外检查each
返回了正确的值,在循环外检查单个元素看起来也很好。但在循环内部,有时会以我无法辨别的模式跳过元素。
就像我说的,通过添加最后一行来解决问题。(也许以某种方式传递给函数的返回值很each
重要?)我的问题不是“我该如何解决这个问题?” 但是“为什么会这样?”