Jquery声明性

Jquery声明性,jquery,Jquery,因此,我现在需要很多次为一个还不存在的上下文定义jquery选择的能力。我想做的是构建一个jquery链,并在将来的上下文中执行它们 差不多 var $future = $.future().find('.stuff').each(function(v) { // do stuff }).on('click', function(e) { // stuff }).hide(); 在未来的某个地方,我们能够做到 $future(ctx); 因此,您可以将其传递给事件处理程序,例

因此,我现在需要很多次为一个还不存在的上下文定义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());
最后一个用途是在同步代码中尝试使事情异步时。因此,当元素存在时,您可以继续调用它,但调用代码不需要知道还没有真正的上下文


这是否存在?如果不是只有我一个人需要这种能力的话?如果它不存在,而且我不是宇宙中唯一的一个人,也许我会尝试一下。

你不需要这样做。jQuery已经有事件委派来支持处理DOM中尚不存在的元素上的事件

经典事件绑定通常是以下内容:

$(...selector...).on('click', doSomething);
这很容易理解为“单击任何选定元素时,请执行某些操作”

jQuery有一个事件委派表单:

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

在事件委派格式中,事件实际上绑定到
…selector…
中匹配的元素,但仅当单击与
…sub selection…
匹配的任何子元素时才会触发。触发事件时会进行检查,因此与选择器匹配的新元素也会触发
doSomething
功能。

您不需要执行任何操作。jQuery已经有事件委派来支持处理DOM中尚不存在的元素上的事件

经典事件绑定通常是以下内容:

$(...selector...).on('click', doSomething);
这很容易理解为“单击任何选定元素时,请执行某些操作”

jQuery有一个事件委派表单:

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

在事件委派格式中,事件实际上绑定到
…selector…
中匹配的元素,但仅当单击与
…sub selection…
匹配的任何子元素时才会触发。触发事件时会进行检查,因此与选择器匹配的新元素也会触发
doSomething
函数。

您可以创建这样的函数

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

您可以稍后调用Dostuflater(ctx)

您可以创建这样的函数

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

您可以稍后调用Dostuflater(ctx)

它已经实现了。我想这就是您想要的-

它已经实现了。我想这就是您想要的-

某种程度上,但事件委派只适用于实际发生的事件。它不允许您为事件实际触发时建立调用链。如果能够使用jquery建立一个以上下文为参数的回调,那将是一件好事。@speajus,当事件被触发时,您可以通过调用事件回调中的函数来建立调用链。@zzzzBoz谢谢,我知道我可以这样做,但是我没有事件触发。。。所以没有什么可以授权的。我建议将此作为编写jquery回调和调用链的更好方法,这比到处定义function(){$(…).doMoreJqueryStuff()}要好得多。但事件委托仅适用于实际事件。它不允许您为事件实际触发时建立调用链。如果能够使用jquery建立一个以上下文为参数的回调,那将是一件好事。@speajus,当事件被触发时,您可以通过调用事件回调中的函数来建立调用链。@zzzzBoz谢谢,我知道我可以这样做,但是我没有事件触发。。。所以没有什么可以授权的。我提出这是编写jquery回调和调用链的一种更好的方法,比到处定义function(){$(…).doMoreJqueryStuff()}更好。我知道这一点,我目前正在处理的问题的迭代是将一些同步代码转换为异步,但是方法接收者希望得到一个jquery对象obj。$el,但是,节点可能尚未创建。我希望能够用这个返回obj。$el和一个不存在的上下文,但当它确实存在时调用建立在它上面的链。此外,它是编写jquery而不必到处进行回调函数声明的更好方法。
$(body).on(e,.stuff),function(){$(this).each(function(v){/*do stuff*/}.hide();})
this.on()处理这个问题,on被称为活动绑定,即使以后添加dom,这个绑定也会起作用。如果以后不需要调用函数,只需使用
$(body).on(“click”、“.stuff”,function(){$(this).each(function(v){/*do stuff*/}.hide();})是的,我知道,您可以传入函数。。。。但是,如果您所做的一切都是将新上下文传递到jquery中,那么为什么呢?能够定义响应(即
$.future().hide('slow')
)似乎更易于重用,我想象它的工作方式是
$(body)。on('click',$.future().css({})。show())
似乎比创建回调函数更好。是的,这也是正确的,但它会是这样的
$(body)。on('click','selector',$。future>)().css({}.show())
我知道这一点,我正在处理的问题的当前迭代是将一些同步代码转换为异步代码,但是方法接收者希望得到一个jquery对象obj。$el,但是节点可能还没有创建。我希望能够使用这个返回obj。$el和一个不存在的上下文,但调用链构建此外,它是编写jquery的一种更好的方法,无需到处进行回调函数声明。
$(body)