4

さまざまなモジュールを持つインタラクティブなフォームシステムがあり、各モジュールのフォームはさまざまなdiv要素内に含まれています。あるモジュールから別のモジュールに変更するとき、私はしばしばこれを行います:

$('#module_1').hide();
$('#module_2').fadeIn();

私はこれが好きですが、このシステムをしばらく開発した後、aが発生するたびに実行したいいくつかの機能(jqgridの再初期化など)がありfadeInます。私はこれを次のように設定しました:

$('#module_2').bind('fadeIn',function(){
    initialize_jqgrid();
});

$('#module_2').fadeIn();すべてのインスタンスに移動してこれに置き換えることなく、のすべてのインスタンスでこれを機能させる方法はありますか?

$('#module_2').fadeIn().trigger('fadeIn');

この背後にある動機は、コードをよりクリーンにすることで$('#module_2').fadeIn().trigger('fadeIn');あり、少し冗長です。

どうもありがとう!

4

4 に答える 4

11

もちろん、

var _old = $.fn.fadeIn;

$.fn.fadeIn = function(){
    var self = this;
    return _old.apply(this,arguments).promise().done(function(){
        self.trigger("fadeIn");
    });
};

// and your code: // replace .bind with .on if jQuery 1.7+
​$("div").bind("fadeIn",function(){alert("worky");});

$("div").fadeIn(2000);​​​​​​​​​​​​​​​​​

デモ
http://jsfiddle.net/gEVsX/2/

コメントの更新

var _old = $.fn.fadeIn;

$.fn.fadeIn = function(){
    return _old.apply(this,arguments).trigger("fadeIn");
};

// and your code: // replace .bind with .on if jQuery 1.7+
​$("div").bind("fadeIn",function(){alert("worky");});

$("div").fadeIn(2000);​​​​​​​​​​​​​​​​​
于 2012-04-26T15:24:58.730 に答える
1

コールバック関数を定義し、それをfadeIn()のパラメーターとして使用できます。

function callback(){
    initialize_jqgrid();
}

$('div#module_2').fadeIn(duration,callback)
于 2012-04-26T15:25:19.783 に答える
0

シンプルな機能:

switch_module('div#module_1','div#module_2');


function switch_module(old_selector, new_selector){
    $(old_selector).hide();
    initialize_jqgrid();
    $(new_selector).fadeIn();
}
于 2012-04-26T15:25:16.567 に答える
0

コールバック関数を使用できます$('div#module_2').fadeIn(500, initialize_jqgrid);

そして、ジェネリックセレクター呼び出しを使用してすべてを関数に入れます。

function fadeModule(selector)
{
    $(selector).fadeIn(500, initialize_jqgrid);
}

そしてそれをそのように呼ぶfadeModule('div#module_2');

編集:500はフェードインのデフォルトの期間です。好きなものを入れてください。

于 2012-04-26T15:27:58.873 に答える