如何返回不同的值

时间:2017-05-05 22:58:12

标签: javascript jquery

Jquery如何链接并返回多个值?

我知道你可以

const $ = {
    a() {
        return this;
    }
    b() {
        return this;
    }
}

$.a().b()

以下示例将单独说明:

$('div').find('p').hide().css() // find an apply style
$('div').find('p') // return all the "p"

查看我的example

jQuery如何返回所有p并保留插件实例?

如何实现相同的行为?

如何知道find()之后是否还有其他来电?

感谢。

2 个答案:

答案 0 :(得分:3)

所有这些API成员都返回jQuery个对象。恰好,jQuery API上有所有这些成员。这就是你如何在同一个对象上链接调用。

看一下文档:

  

在返回jQuery的API调用中,返回的值将是原始jQuery对象,除非该AP另有记录

show()会返回jQuery类型

hide()会返回jQuery类型

find()会返回jQuery类型

请注意,css()不会返回jQuery类型,因此您无法将其链接起来。

答案 1 :(得分:0)

jQuery遵循这样的方法:

function $(param) {
  if(!(this instanceof $))             // if $ is called without using 'new'
    return new $(param);               // then return a new instance
    
  this.param = param;                  // ...
}

$.prototype.a = function() {           // the function a has to...
  // a's logic
  console.log("this is a");
  return this;                         // return this so there will be chaining
}

$.prototype.b = function() {           // the same goes for b
  // b's logic
  console.log("this is b");
  return this;
}

$.c = function() {
    // c's logic
    console.log(c);
    // not returning this as c can't be chained
}

$("some param").a().b().a();

在示例中,ab是返回this的方法(附加到原型),因此可以对它们进行链接($(...).val()的示例,{{1 }})。但是,$(...).addClass()作为属性直接附加到函数对象c,因此无法链接($$.isArray()的示例不能与{{{}}混淆1}})。

迷你jQuery示例:

$.each()
$(...).each()