gpt4 book ai didi

javascript - 不一致的 jQueryeach() 行为和无法解释的修复

转载 作者:行者123 更新时间:2023-11-28 20:17:21 24 4
gpt4 key购买 nike

我正在基于这个方便的模板为基于类的 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 中存在隐式返回,因此您可能会从回调中返回 false 甚至 false,具体取决于回调中执行的操作。

为避免出现任何问题,只需将末尾的 data 更改为 true 即可。

关于javascript - 不一致的 jQueryeach() 行为和无法解释的修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18968983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com