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()
之后是否还有其他来电?
感谢。
答案 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();
在示例中,a
和b
是返回this
的方法(附加到原型),因此可以对它们进行链接($(...).val()
的示例,{{1 }})。但是,$(...).addClass()
作为属性直接附加到函数对象c
,因此无法链接($
和$.isArray()
的示例不能与{{{}}混淆1}})。
迷你jQuery示例:
$.each()
$(...).each()