【问题标题】:How to pass selected element to 'this' in the chained functions如何在链式函数中将选定元素传递给“this”
【发布时间】:2016-07-20 04:35:09
【问题描述】:

我正在尝试了解链式函数的工作原理,尤其是如何将所选元素传递给链式函数。

假设我们有如下链式函数:

var func = {};
func.remove= function() {
    $(this).remove();
}

如何通过 jQuery 或 JavaScript 选择元素并将其传递给链式函数,如下所示:

var elm = $("foo");
elm.func.remove();

var elm2 = document.getElementById("foo");
elm2.func.remove();

【问题讨论】:

  • 所有链式方法都是返回对象的函数。这允许开发人员简单地调用该返回对象的方法。您的第一个示例 (func,.remove) 不是可链接的方法,因为它不返回任何内容。

标签: javascript jquery methods jquery-chaining


【解决方案1】:

链式函数是一种返回被调用对象的方法(因此它不能返回元素本身,除非您扩展原生 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();

【讨论】:

  • 非常感谢,您的解释非常有用。
猜你喜欢
  • 1970-01-01
  • 2016-12-11
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
  • 2011-07-15
  • 1970-01-01
  • 2011-04-07
相关资源
最近更新 更多