0

連鎖関数がどのように機能するか、特に選択した要素を連鎖関数に渡す方法を理解しようとしています。

次のような連鎖関数があると仮定します。

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

次のように、jQuery または JavaScript で要素を選択し、連鎖関数に渡すにはどうすればよいですか。

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

また

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

1 に答える 1

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();
于 2016-03-31T16:01:45.587 に答える