我试图理解链式函数的工作方式,特别是如何将所选元素传递给链式函数。
假设我们有一个链式函数如下:
var func = {};
func.remove= function() {
$(this).remove();
}
如何通过jQuery或JavaScript选择元素并将其传递给链式函数,如下所示:
var elm = $("foo");
elm.func.remove();
OR
var elm2 = document.getElementById("foo");
elm2.func.remove();
答案 0 :(得分:3)
链式函数是一种返回被调用对象的方法(因此除非扩展本机DOM对象,否则它不能返回元素本身,这是不推荐的)。
func
没有链接,因为它根本不是一个功能。 remove
在没有返回它所属的对象之前没有链接。
如果要使用与元素一起使用的链式函数,则需要定义一个对象,在该对象上定义链式方法,并将该元素存储为该对象的属性。
例如:
function MyConstructor(element) {
this._element = element;
}
MyConstructor.prototype.doA = function doA () {
console.log(this._element);
return this;
};
MyConstructor.prototype.doB = function doB () {
element.style.display = "none";
return this;
};
var example = new MyConstructor(document.getElementById('foo'));
example.doA().doB();