如何在闭包内移动 DOM 元素

2024-02-09

我正在尝试使用闭包这个答案 https://stackoverflow.com/a/41231853/370407增量移动 DOM 元素。最终,我想动态创建许多应该独立移动的 DOM 元素,这就是我尝试在函数中定义变量的原因。

给出的答案的例子是

var lightning = new Array();
lightning.push($(".lightning"));

var l0 = -210;

function thunkAdd(){
  var lThis = l0;
  console.log('set lThis to '+ lThis);
  return function inc() {
    console.log('lThis = '+ lThis);
    return lThis ++;
  }
  lightning[0].css("left", lThis);
  console.log('lightning[0] left = '+lightning[0].css("left"));
}

var incrementInterval = setInterval(thunkAdd(), 33);

Codepen 上的第一个示例 http://codepen.io/mrengy/pen/BQMMbL。查看控制台,似乎由于某种原因,console.log('lightning[0] left = '+lightning[0].css("left"));没有运行。

我尝试的另一种方法是:

var lightning = new Array();
lightning.push($(".lightning"));

var l0 = -210;
var lThis = l0;

function thunkAdd(){
  lThis ++;
  console.log('lThis = '+ lThis);

  lightning[0].css("left", lThis);
  console.log('lightning[0] left = '+lightning[0].css("left"));
}

var incrementInterval = setInterval(thunkAdd, 33);

Codepen 上的第二个例子 http://codepen.io/mrengy/pen/Jbxxqz。这将在屏幕上移动图像,但理想情况下(因为下一步是动态创建和移动许多这些图像)我想定义变量lThis在 - 的里面thunkAdd函数第一次运行时,如果定义了,则递增它并使用lThis变量来移动图像。我怎样才能做到这一点?


正如注释中已经提到的,return后的代码不会被执行,所以你永远不会改变元素的css left属性,而只是增加变量。

您需要移动lightning[0].css("left", lThis);以间隔执行的内部闭包。

See 更新的例子 http://codepen.io/anon/pen/XNOGpO?editors=1111

您也可以考虑使用jqueryanimate http://api.jquery.com/animate/而不是这个(您也可以使用许多元素或在循环中执行此操作)

$(".lightning").animate({left: '2000px'}, 10000, 'linear');

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在闭包内移动 DOM 元素 的相关文章

随机推荐

  • eclipse (pom.xml) 中的 Maven 错误:无法传输 org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4

    我想使用 Maven 来创建 Web 项目来自动导入我需要的所有库 所以我选择 maven archetype webpp 之后我在 pom xml 文件上收到此错误 Description Resource Path Location T
  • 属性不可分配给接口中的字符串索引[重复]

    这个问题在这里已经有答案了 我有以下接口 export interface Meta counter number limit number offset number total number export interface Api
  • C# 中的 LFU 缓存?

    C 中是否有现成的 LFU 缓存 Java 有大量的 LFU 缓存实现 应该很容易移植到 C 例如 http faq javaranch com view CachingStrategies http faq javaranch com v
  • 识别图像中的 visio 形状

    在提供 SCADA 解决方案时 我们经常会获得结构化控制图 如下所示的 visio 类似流程图 中指定的最终用户规范 这些规范通常以 PDF 格式或图像形式提交 为了在 C 中访问这些 我希望使用 OpenCV 库之一 我正在研究模板识别
  • C++ 数据库访问库

    背景 我有一个用本机 C 编写的应用程序 它使用 wxWidgets 工具包的 wxODBC 数据库访问库 该库正在removed http wiki wxwidgets org ODBC来自 wxWidgets 的所有未来版本 我需要用另
  • 调用aspx页面随机返回图像慢

    好的 问题来了 我有一个asp net网站 有一个名为GetThumbnail aspx的aspx页面 代码如下 string newThumbnailPath ReaderUtilities GetThumbnailPath ptiId
  • Three.js / OrbitControls 未定义

    当我尝试导入 OrbitControls js 时 出现以下内容 我得到了Cannot use import statement outside a module error 所以 我使用 但这次我得到 ReferenceError Orb
  • 三.js渲染完成

    有没有办法知道对象何时完成渲染 我知道其中一个示例中有一个进度条 但我正在寻找一个简单且不复杂的示例 我已经查看了我正在使用的加载器 OBJMTLLoader 和渲染器 WebGLRenderer 我没有注意到一个简单的 renderer
  • 如何在 Enum 上设置空间

    我想在我的枚举上设置空间 这是我的代码示例 public enum category goodBoy 1 BadBoy 我想设置 public enum category Good Boy 1 Bad Boy 当我检索时我想看到Good B
  • 从 r 连接 oracle

    我是新来的R并尝试使用此处所述的方式连接到 Oracle 我下载了即时客户端 但除了一些 dll 文件之外找不到任何东西 请大家逐步指导我如何从以下位置连接到 Oracle R 我查看了一些解决方案 但它们无法解决 请告诉我是否有连接到 o
  • 如何用 C++ 为 GLSL 制作一维 lut

    我开始了解如何实现片段着色器来执行 1D LUT 但我正在努力寻找任何好的资源来告诉您如何在 C 中制作 1D LUT 然后对其进行纹理处理 因此 对于一个简单的示例 给出以下 1D lut 我会用以下数据创建一个数组吗 int color
  • startService() 从服务类本身

    我尝试从服务类启动 android 服务 这样做的原因是为了实现一定的平台独立性 这样做我在 android content ContextWrapper startService ContextWrapper java 326 处收到 N
  • fromtyping_extensions import ParamSpec ImportError:无法从“typing_extensions”导入名称“ParamSpec”

    我正在研究 FastAPI 并发生了这个错误 from fastapi import FastAPI import uvicorn app FastAPI app get ping async def ping return Hello I
  • ssh 脚本不会将控制权返回给父脚本

    我试图通过将其写入远程服务器的标准输入来执行本地脚本ssh命令 脚本运行良好 但随后ssh不退出 它只是挂起 并且控制权不会返回到父脚本 父外壳 for HOSTNAME in HOSTS do ssh t t HOSTNAME bash
  • 限制要创建的模型实例的数量 - django

    我有一个模型 我只想从中创建一个实例 并且不应允许更多实例 这可能吗 我有一种感觉 我在某个地方看到过这种做法 但不幸的是我无法找到它 编辑 我需要这个来构建一个极其简单的 CMS 我有一个 FrontPage 和 Page 类继承的抽象类
  • R 命令行将文件名传递给参数中的脚本 (Windows)

    我很难将文件名传递给 R 脚本 该文件是一个 csv 文件 其中包含多次运行脚本的批处理参数 我尝试将其包含在此处 以便用户无需编辑 R 脚本即可指定该文件的位置 我的 Windows 命令行语法是 R CMD BATCH slave ar
  • 子类化 UIView 以在 Quartz 中绘制

    我正在尝试使用 Quartz 2D 在我的 iPhone 应用程序中绘制图形 我知道我必须通过子类化 UIView 并重写 drawRect 函数来做到这一点 我正在努力追随this http www techotopia com inde
  • 按一个列表对另一个列表进行排序

    我有 2 个列表对象 一个只是整数列表 另一个是对象列表 但对象具有 ID 属性 我想要做的是按照与整数列表相同的排序顺序按对象的 ID 对对象列表进行排序 我已经玩了一段时间了 试图让它发挥作用 到目前为止还没有什么乐趣 这是我到目前为止
  • 用于 iPhone 应用程序开发的 Objective-C 中的字符串标记器

    我正在写一个字符串标记器Objective C http en wikipedia org wiki Objective C for an iPhone应用程序 http en wikipedia org wiki IPhone Third
  • 如何在闭包内移动 DOM 元素

    我正在尝试使用闭包这个答案 https stackoverflow com a 41231853 370407增量移动 DOM 元素 最终 我想动态创建许多应该独立移动的 DOM 元素 这就是我尝试在函数中定义变量的原因 给出的答案的例子是