1

jQuery関数を使用して繰り返しhtmlを作成します。

$.append()$.before()$.after()などを使用して、関数に柔軟性を持たせたいと思います。

現在、私は次のようなことをしています

$.fn.appendRecurringHTML = function(domInsertMethod, domInsertID, htmlToInsert) {
    if(domInsertMethod == 'append'){
        $(domInsertID).append(htmlToInsert);
    }
    else if(domInsertMethod == 'before'){
        $(domInsertID).before( ...
}

しかし、私は(疑似)を好むだろう

$.fn.appendRecurringHTML = function(domInsertMethod, domInsertID, htmlToInsert) {
    $(domInsertID).window[domInsertMethod](htmlToInsert);
}

しかし、それは私にはうまくいきません。

これは可能ですか?もしそうなら、どのように?

4

2 に答える 2

2

使うだけ

$(domInsertID)[domInsertMethod](htmlToInsert);

デモ: http://jsfiddle.net/UZKLY/

$(domInsertID)(または任意の)の結果が$()jQueryオブジェクトであるため、これが機能するため、呼び出したいプロパティとメソッドがあります。通常、それらにアクセスするにはドット表記を使用しますが、ブラケット表記も同様に有効です。ブラケット表記は、プロパティ/メソッドを動的に取得する唯一の方法です (無効な識別子文字を許可します)。

ただし、技術的には任意のメソッド名を指定して呼び出すことができるため、注意してください。したがって、許可するかどうかはあなた次第です。

$.fn現状では、セレクターから選択された要素を実際に使用していないため、に追加しても意味がありません。このセットアップを使用する方が理にかなっています。

$.appendRecurringHTML = function(domInsertMethod, domInsertID, htmlToInsert) {
    $(domInsertID)[domInsertMethod](htmlToInsert);
};

そして、あなたはそれを次のように呼びます:

$.appendRecurringHTML("after", "#id", "html");

ただし、選択した要素をターゲットとして使用したい場合は、次を使用できます。

$.fn.appendRecurringHTML = function(domInsertMethod, htmlToInsert) {
    return this.each(function () {
        $(this)[domInsertMethod](htmlToInsert);
    });
};

そして、次のように呼び出します。

$("selector").appendRecurringHTML("after", "html");

デモ: http://jsfiddle.net/UZKLY/1/

連鎖を維持し、一致したすべての要素に適用されます。

于 2013-06-06T13:46:33.610 に答える
1

これを試して:

$(domInsertID)[domInsertMethod](htmlToInsert);

このアプローチでは、最初にdomInsertIDを使用して jQuery オブジェクトを作成します。そのオブジェクトのプロトタイプ チェーンからdomInsertMethodを選択し、 htmlToInsertを使用してメソッドを実行します。

于 2013-06-06T13:44:56.150 に答える