问题标签 [jquery-chaining]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
363 浏览

javascript - 如何使用 jQuery 创建元素并动态选择它们

我对此有点困惑。我想创建一些元素(使用 jQuery),在该包装集上调用一个函数,并通过链继续这个过程几次。例如,

第一次调用插件影响 xxx,第二次影响 yyy,依此类推。但这并没有发生;我认为 call_plugin() 每次都在第一个 div (id=xxx) 上被调用。有解决方法吗?

提前致谢!

0 投票
2 回答
607 浏览

jquery - 只有在上一组工作完成后才循环执行一组工作

我有一些代码可以在链中完成一组不同的操作。这组操作本身是在循环中执行的。由于我正在处理的系统的性质,操作集需要同步执行(即下一组操作在第一组完成之前无法执行)。异步执行会抛出远程处理器(不在我的控制范围内),并导致代码失败。现在,我能够让它工作的唯一方法是使用警报框,这真的很蹩脚,不是一个选择。我试过了:

  • 使用 $.ajax,并将 async 设置为 false
  • 使用睡眠功能
  • 警报框(在绝望中使用)

这是代码 - 有什么想法吗?:

0 投票
3 回答
2011 浏览

javascript - 引用 Jquery 链中的当前对象

以下链有效:

但这不会:

this.scrollHeight也不行。如何在 jquery 链中获取当前对象引用?

0 投票
1 回答
339 浏览

jquery - 如何使用 JQuery 中的过程正确排序动画事件

我一直在尝试将 JQuery 中的一些动画事件与我试图同时或以特定顺序发生的许多其他过程进行排序时遇到了一些困难。这基本上是我想要完成的事情:

  1. 用户单击一个按钮,这会导致自定义 div 弹出框出现在屏幕上。
  2. 弹出框与其背景一起动画。
  3. 弹出框显示一条加载消息,同时它还向服务器发送(延迟 1.5 秒后)一个 Ajax 请求,以下拉指定的内容,然后将这些内容加载到弹出框中。
  4. 然后,加载文本的弹出框应该被通过侧向检索的内容替换。
  5. 当用户阅读消息时,他/她可以点击弹出框的关闭图标或点击退出键来关闭弹出框。
  6. 弹出窗口通过淡出动画关闭。

使用我当前的代码(下面的 JSFiddle 链接),这似乎可以正常工作,并且弹出动画和排序将正确显示,前提是用户在单击按钮再次显示之前先关闭弹出窗口。但是(这是我的问题)...如果弹出窗口保持打开状态并且用户再次单击该按钮,则动画的顺序会变得混乱...似乎事件链分崩离析-过程显示弹出窗口不会首先等待弹出窗口关闭,并且您会得到可怕的效果。

关于如何解决这个问题的任何想法?

理想情况下,正如代码中的逻辑所暗示的,我们希望等待弹出窗口的关闭动画完全完成,然后再开始弹出窗口的显示动画。说到JQuery,我还是有点菜鸟,请见谅。我试图做一些研究,并相信解决方案可能在于以某种巧妙的方式使用 Deferreds。然而,我认为你们可能会提供一个伟大的、有效的、最新的解决方案,并防止我把我所有的头发都拔掉。=)

这是我的代码(在某些地方有所简化,但仍然很好地模仿了问题):

http://jsfiddle.net/Nickel3ack/kdcwT/21/

0 投票
3 回答
40210 浏览

jquery - 什么时候应该使用 jQuery deferred 的“then”方法,什么时候应该使用“pipe”方法?

jQueryDeferred有两个函数可用于实现函数的异步链接:

then()

deferred.then( doneCallbacks, failCallbacks ) Returns: Deferred

doneCallbacks当 Deferred 被解析时调用的函数或函数数组。
failCallbacks当 Deferred 被拒绝时调用的函数或函数数组。

pipe()

deferred.pipe( [doneFilter] [, failFilter] ) Returns: Promise

doneFilter解析 Deferred 时调用的可选函数。
failFilter当 Deferred 被拒绝时调用的可选函数。

我知道then()已经存在了一点时间,pipe()所以后者必须增加一些额外的好处,但我不知道究竟有什么区别。两者都采用几乎相同的回调参数,尽管它们的名称不同,并且返回 aDeferred和返回 a之间的差异Promise似乎很小。

我一遍又一遍地阅读官方文档,但总是发现它们太“密集”而无法真正包裹我的头,搜索发现很多关于一个或另一个功能的讨论,但我没有找到任何真正澄清不同的东西各有优劣。

那么什么时候用比较好then,什么时候用比较pipe好呢?


添加

Felix 的出色回答确实有助于阐明这两个功能的不同之处。但我想知道是否有时 的功能then()优于pipe().

很明显,它比前者pipe()更强大then(),而且似乎前者可以做后者可以做的任何事情。使用的一个原因then()可能是它的名称反映了它作为处理相同数据的一系列函数的终止角色。

但是是否有一个用例需要返回由于返回新的而无法完成then()的原件?Deferredpipe()Promise

0 投票
2 回答
977 浏览

internet-explorer-7 - 此用于切换 div 的 JQuery 代码在 IE7 中不起作用,但在其他浏览器中起作用

这是我的问题,我有一段 jquery 在现代浏览器中运行良好,但在 IE7 中无法运行。

这个想法是,当您单击其中一个 < A > 标记时,名为“innerdetails”的 div 将打开。

这是我的 HTML:

这是有问题的 Jquery 代码。

有趣的是,在警报中,IE7 返回“0”作为 .children(".inner-course-details") 的长度

铬返回“1”

0 投票
1 回答
186 浏览

jquery - 使用 $.ajax 调用中断链接的自定义插件

我创建了一个 jQuery 插件,用于在页面上创建带有从 web 服务调用中读取的 xml 的 html。作为备份,如果 web 服务调用失败,则默认 xml 存储在 var 中以用于构建 html。现在,我无法使用 Web 服务,所以我只能使用虚拟 xml 测试失败场景。我已经编写了所有内容并使用了 $.ajax 调用,当我在我的代码中包含对 web 服务的 $.ajax 调用时,它仍然可以正常工作,但是链接被破坏了。

我知道要“返回这个;”,并且我已经实现了 $.when().then() 包装我的 $.ajax 调用来处理 ajax 调用的异步性质可能引入的任何问题,但链接仍然存在不行。萤火虫控制台总是告诉我,当它到达链中的下一个方法时,我的方法返回是未定义的,这让我相信我实际上根本没有返回“this”,即使它看起来像我一样。我的代码如下(用伪代码替换了很多以节省时间):

0 投票
1 回答
160 浏览

javascript - 分离 pipe() 和 $.Deferred.resolve()

有没有办法在上面的代码中单独加载 dfr,然后将其传递给 $.Deferred() 之类的......

http://jsfiddle.net/realwork007/KgY33/25/类似于这个例子,但唯一的事情是我将单独填充 dfr。

编辑:我正在写作以可视化选择排序算法,并且我有 3 到 4 个辅助函数,例如更改 backgroundOfBlock()、blink(index) 和 swap(from,to)

所以我的选择排序可视化就像:

如果我运行此方法,所有动画同时运行,但我需要它们按顺序运行...

使用任何技术...

0 投票
2 回答
12826 浏览

javascript - Jquery 承诺链

我有一个简单的事件链:

  1. 从元数据表中获取列(异步)
  2. 加载选定的列(异步)
  3. 渲染列表

我过去只是将这些函数链接起来,每个函数都在完成后调用下一个函数。但是,发生了什么并不是很明显(调用getColumnsFromMeta结果是在填充视图)。因此,为了清晰和代码重用,我想使用JQuery Promises. 我以前使用过承诺。但是我如何链接两个以上?getColumnsFromMeta ().then(loadSourceFromDatabase /*some arguments*/) //.then(renderList)?;

这是一个示例getColumnsFromMeta

0 投票
1 回答
268 浏览

jquery - .prependTo() 是否遵循 jQuery 链接?

我正在进行一个项目,在某种程度上,有一个检查按钮,当检查它时将其重新定位到底部。这是它的标记:

这是它的代码:

我希望将.subTaskdiv 附加到.subTaskWrapperdiv,所以在这种else情况下我首先尝试了这个:

我认为.appendTo在这种情况下会将 div 附加.subTask.subTaskWrapperdiv,但我收到了这个错误:

未捕获的错误:HIERARCHY_REQUEST_ERR:DOM 异常 3

但是当我向 中添加另一个.parent().appendTo($(this).parent()),它起作用了,所以它变成了

.appendTo($(this).parent().parent())

我想知道为什么在第一种情况下会生成此异常,以及.appendTo当它位于之后如何受到影响,它是.parent()附加.parent()的还是只是原始的$(this)