0

以下のように、セレクターを使用してjqueryからオブジェクトをjavascript関数に渡したいです。

flash($("#something span"), "#fff", 250);

しかし、それは機能していないようです。

JavaScript関数に何を入れればよいかわかりません。私が今作っているのは:

function flash(obj,color1,color2,duration) {
    obj.animate({backgroundColor:color1},duration);
    setTimeout(function(){this.animate({backgroundColor:color2},duration);},duration);
}

または、オブジェクトを渡す代わりに別の方法がありますか? たとえば、jquery の場合: $("this").flash("#f79999", "#eee", 250);

しかし、JavaScript関数を定義する方法は?

4

3 に答える 3

1

単純な構文エラーがあります。

ojb.animate({backgroundColor:color},duration);

する必要があります

obj.animate({backgroundColor:color},duration);
于 2012-10-23T23:30:36.110 に答える
0

のようなプロパティをアニメーション化するには、 jQuery.Colorプラグインを含める必要がありますbackground-color

アニメーションのプロパティと値」より:

アニメーション化されたすべてのプロパティは、以下に示す場合を除き、単一の数値にアニメーション化する必要があります。数値でないほとんどのプロパティは、基本的な jQuery 機能を使用してアニメーション化できません (たとえば、、、widthまたはheightleftアニメーション化できますbackground-color、jQuery.Color() プラグインが使用されない限り、アニメーション化できません)。[...]


オブジェクトを渡す代わりに別の方法はありますか? たとえば、jquery の場合: $("this").flash("#fff",250);

jQuery のPlugins/Authoringがこれに役立つはずです。ただし、次のように定義できます。

jQuery.fn.flash = function (color, duration) {
    return this.animate({ backgroundColor: color }, duration);
};

$('#something span').flash('#fff', 250);
于 2012-10-23T23:51:13.983 に答える
0

With the jQuery.Color plugin installed in the page (ack. @Jonathan Lonowski) ...

You can avoid passing an object by using javascript's .call() or .apply().

Here's an example :

$(function() {
    function flash(color, duration) {
        this.animate({backgroundColor:color}, duration);
    }
    $("#something span").on('click', function() {
        flash.call($(this), "#fff", 250);
    });
    $("#something_else span").on('click', function() {
        flash.apply($(this), ["#fff", 250]);
    });
});

.call() and .apply() aren't really necessary here; regular function calls would suffice.

.call() and .apply() are normally used in cases where you need to call a method of one object but give it the context of another object. By doing so, the method is made to operate on a different this.

于 2012-10-24T00:27:24.490 に答える