0

の値がoldHeight上書きされないのはなぜですか?それは私が議論として渡したものではないはずですoldHeight80引数を渡しnewHeightても、それは上書きされません。ただし、ドキュメントによると、自動的に更新されます。コードは次のとおりです。

( function($) {
$.fn.bad = function(callback) {
    var options;
    var settings = $.extend({
        "oldHeight":"80",
        "newHeight":"200"
    }, options);
    return this.each( function() {
        var that$ = $(this);
        that$.bind("mouseenter", function() {
            $(this).animate({ "height" : settings.newHeight+"px" });
        }).bind("mouseleave", function() {
            $(this).animate({ "height" : settings.oldHeight+"px" });
        });
    });
}
})(jQuery);
$(".box").bad({"oldHeight":"400"});

そしてこれ===>Fiddle

4

2 に答える 2

1

これを試してみてください

var settings = {};
var settings = $.extend(settings, {
    "oldHeight":"80",
    "newHeight":"200"
}, options);

関数はoptionsnotを受け入れる必要callbackがあります(使用されているコールバックがない場合)。

したがって、コードは次のようになります。

(function($) {
$.fn.bad = function(options) {
    var settings = {};
    var settings = $.extend(settings, {
        "oldHeight":"80",
        "newHeight":"200"
    }, options);
    ...

テスト

于 2013-02-27T10:50:59.900 に答える
1

「オプション」を null で初期化var options;し、空の値で設定を拡張しました。

( function($) {
    $.fn.bad = function(options) {
            var settings = $.extend({
                "oldHeight":"80",
                "newHeight":"200"
            }, options);

    ...

これは機能します。

于 2013-02-27T10:45:28.020 に答える