0

Stackoverflow で他の例を使用して jquery オブジェクトを拡張しようとしましたが、うまくいきませんでした。

    var z = {

        vars: {
            x: $('#c')
        }

    };

    var y = {

        v: $(this).val(a),
        h: $(this).html(a)

    };

    $.extend(y,z);

    alert(y.vars.h.x);
4

2 に答える 2

1

それらが正しく拡張されているように見えますが、後で間違って呼び出しているだけです。どのように機能するかをデバッグするのに役立つように、以下をまとめました。

var z = {
    vars: {
        x: "var_Z.X"
    }
};

var y = {
    v: "var_Y.V",
    h: "var_Y.H"
};

$.extend( y, z );

// Output
    ( y.vars.x ) // var_Z.X
    ( y.v ) // var_Y.V
    ( y.h ) // var_Y.H

    ( z.vars.x ) // var_Z.X
    ( z.v ) // undefined
    ( z.h ) // undefined

http://jsfiddle.net/daCrosby/6YvHw/

于 2013-06-17T15:41:38.140 に答える
0
jQuery.extend( target [, object1 ] [, objectN ] )

ターゲット オブジェクト (最初の引数) が変更され、 からも返されることに注意して$.extend()ください。
ただし、元のオブジェクトの両方を保持したい場合は、空のオブジェクトをターゲットとして渡すことで実行できます。

var object = $.extend({}, object1, object2);

var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};
var object2 = {
  banana: { price: 200 },
  durian: 100
};

// Merge object2 into object1
$.extend( object1, object2 );

出力は次のとおりです。

{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}

説明:

によって実行されるマージ$.extend()は、デフォルトでは再帰的ではありません。最初のオブジェクトのプロパティ自体がobjectorarrayである場合、2 番目以降のオブジェクトの同じキーを持つプロパティによって完全に上書きされます。
値はマージされません。これは、次の例で の値を調べることで確認できますbanana。ただし、関数の最初の引数を渡すことtrueで、オブジェクトは再帰的にマージされます。

参考:http ://api.jquery.com/jQuery.extend/

于 2015-06-30T06:57:58.423 に答える