jquery的deferred对象的done方法和then方法都能实现链式调用,但是他们的作用是有区别的,then方法中如果你传递的方法有返回值,那么他会传递给下一个链式调用的方法。而done方法与此相反,你传递的方法就算有返回值,done方法也不会把你的返回值传给下一个链式调用的方法的,

本文章来给大家详细介绍关于在jquery中children()与find()用法区别,有需要了解的朋友可进入参考。

话不多说,直接上实例:

children()是一个筛选器,顾名思义就是筛选孩子,筛选那些符合条件的孩子。

var defer = jQuery.Deferred();
defer.done(function(a,b){
  console.log("a = " + a+"b = " + b);
  return a * b;
}).done(function( result ) {
  console.log("result = " + result);
}).then(function( a, b ) {
  console.log("a = " + a+"b = " + b);
  return a * b;
}).done(function( result ) {
      console.log("result = " + result);
}).then(function( a, b ) {
  console.log("a = " + a+"b = " + b);
  return a * b;
}).done(function( result ) {
  console.log("result = " + result);
});
defer.resolve( 2, 3 );

完整的格式如下:

输出结果如下:

.children(expr)

美高梅电子游戏 1

其中children是筛选器的名称,expr是表达式,所有选择器中的表达式都可以用在这,比如按标签名”div”,按类名”.class”,按序号”:first”等等,如果表达式为空,那么返回的是所有的孩子,返回的结果仍为jQuery对象。

结果分析:

jquery取索引使用eq函数。

1、第一个done和第二个done都返回了defer.resolve( 2, 3 )

eq() 选择器选取带有指定 index 值的元素。

2、done中callback的返回值不会被传递

index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1)。

3、第二个done只有一个参数,接收了defer.resolve( 2, 3
)的第一个参数2,所以result是2

经常与其他元素/选择器一起使用,来选择指定的组中特定序号的元素。

4、第一个then接收defer.resolve( 2, 3
),接收两个参数,result是6,同时新建一个deferred
object,传递result给deferred object

例子:

5、第三个done接收到了这个新的deferred
object和传递的result,打印结果是6,并把这个新的deferred
object传递给第二个then

 代码如下

6、第二个then现在接收新的deferred
object,它只有一个参数,是result,所以参数b没有定义,返回的结果是NaN,同时又新建一个deferred
object

复制代码

7、第四个done接收一个新建的deferred
object,传递的参数是NaN,打印的结果自然就是NaN

$(‘#test’).children().eq(1).css({‘display’:’inline-block’});

以上这篇jquery中done和then的区别(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

将id为test的元素的第二个子元素样式设置为’display’:’inline-block’。

您可能感兴趣的文章:

  • Jquery $when done
    then的用法详解

另一种写法

 代码如下

复制代码

$(“:eq(index)”)如:$(“p:eq(1)”)

例如:

 代码如下

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章