我基於對基於類的CoffeeScript的jQuery插件這種方便的模板編寫插件的行爲:https://gist.github.com/rjz/3610858不一致jQuery的每個()有無法解釋的修復
一切都運行得很好。然而,在年底一些意外的行爲,當我註冊插件:
$.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
循環有時無法遍歷每個元素。
檢查this.size()
以外的each
循環返回正確的值,並檢查循環外的單個元素也看起來不錯。但是在循環內部,元素有時會被跳過,這是我無法辨別的模式。
就像我說的,問題是通過添加最後一行來解決的。 (也許函數的返回值以某種方式傳遞給each
很重要?)我的問題不是「我該如何解決這個問題?」但是「爲什麼這個工作?」
你也可以在迭代器函數中使用顯式的'return'來顯式地不返回任何東西。 AFAIK,jQuery的['each'](http://api.jquery.com/each/)檢查確切地'false'而不是任何falsy值。 –
啊!這就說得通了。謝謝! –