1

因此,我现在多次需要为尚不存在的上下文定义 jquery 选择的能力。我想做的是建立一个jquery链并在未来的某个上下文中执行它们。

就像是

var $future = $.future().find('.stuff').each(function(v) {
    // do stuff
}).on('click', function(e) {
    // stuff
}).hide();

并且在未来的某个地方能够做到

$future(ctx);

因此您可以将其传递给事件处理程序等

这将非常有用,$.bind因此您可以将 jquery 选择绑定到尚不存在的元素,并在它确实存在时发生。

当它获得类 showme 时显示一个元素。

$.bind('.showme', $.future().show());

想到的最后一个用途是当您尝试在同步代码中使事物异步时。因此,当元素存在时,您可以继续调用它,但调用代码不需要知道还没有真正的上下文。

这存在吗?如果不是我在宇宙中需要这种能力吗?如果它不存在,并且我在宇宙中并不孤单,也许我会刺伤。

4

3 回答 3

3

它已经实施了。我想这就是你要找的东西 - https://github.com/furf/jquery-future

于 2013-01-29T15:25:03.563 回答
1

你不需要做任何这些。jQuery 已经有事件委托来支持处理 DOM 中尚不存在的元素的事件。

经典事件绑定通常是这样的:

$(...selector...).on('click', doSomething);

这很容易理解为“当任何选定的元素被点击时,做某事”

jQuery 有一个事件委托形式:

$(...selector...).on('click', ...sub-selection..., doSomething);

在事件委托格式中,事件实际上是绑定到 中匹配的元素...selector...,但只有当它的任何匹配的子元素...sub-selection...被点击时才会触发。触发事件时会进行检查,因此匹配选择器的新元素也会触发该doSomething函数。

于 2013-01-29T14:46:24.817 回答
0

你可以创建一个这样的函数

function doStuffLater(e){
 $(body).on(e,".stuff",function(){
   $(this).each(function(v){ /*do stuff*/ }).hide();
 });
}

你可以稍后调用 doStuffLater(ctx);

于 2013-01-29T14:47:48.490 回答