0

私はいくつかのテーブルベースのウィジェット (listview-kind-of) を作成しましたが、それらはすべて同じ特性を持っています: 奇数/偶数行のスタイリング、ホバーのオン/オフ、カラー onClick の設定、ゴミ箱アイコンをクリックしたときの行の削除。

そのため、各ウィジェットのコードは常に同じ (プロトタイプ) です。コードを一度だけ使用して、すべてのウィジェットに適用/継承する方法はありますか?

第 2 に、コードの一部を次に示します。これを最適化できますか?

var me = this;
$("tr",this.table).each(function(i)
{
    var tr = $(this);
    tr.bind("mouseover",function(){me.hover(tr,true)});
    tr.bind("mouseout",function(){me.hover(tr,false)});
    tr.bind("click",function(){me.Click(tr)});
});
$("tr").filter(":odd").addClass("odd");
4

1 に答える 1

0

次の 2 つのオプションがあります。

まず、その基本的な機能を処理するプラグインを作成してから、そのリストに特化した機能を実行する他のプラグインを作成します。

次に、jQuery.extend を使用して 1 つのプラグインを拡張し、新しいプラグインを作成します。

これを最適化するには、イベント委任を使用します ( jquery().live())

var me = this;
var id = this.table.attr('id');

$('#'.id)
.live("mouseover",function(){me.hover($(this),true)})
.live("mouseout",function(){me.hover($(this),false)})
.live("click",function(){me.Click($(this)});

$("tr").filter(":odd").addClass("odd");

http://docs.jquery.com/Events/live

于 2009-11-28T17:52:55.610 に答える