2011-01-16 18 views
1

ソート機能を備えたカスタムビューを作成していて、ソートされる要素へのクリックイベントがバインドされていないとどのように私は要素を削除し、それらを並べ替えて追加した結果として。JQueryイベントは、削除して再追加するとアンバインドされます

「子供」がバウンドイベントを維持するようにこれを行うより良い方法はありますか?

function sortcontainer(container, sortby) 
{ 
alert(container.data("sessionlist").datetimesort); 
var children = container.children(); 

children.sort(function (a, b) { 
    if (sortby == "datetime") 
    { 
    if (!$(a).attr("starttime")) 
    return -1; 
    else if (!$(b).attr("starttime")) 
    return 1; 
    else if (container.data("sessionlist").datetimesort) 
    return $(a).attr("starttime") - $(b).attr("starttime"); 
    else 
    return $(b).attr("starttime") - $(a).attr("starttime"); 

    } 
}); // End sort function 

container.empty(); 
container.html(children); 

if (sortby == "datetime") 
    container.data('sessionlist').datetimesort = !container.data('sessionlist').datetimesort; 
} 

答えて

1

jQueryを使用している場合は、live構文を使用してクリックイベントを定義したいと思うでしょう。ライブとは、セレクタに一致するすべての現在および将来のイベントのイベントをバインドします。

1

以前に求めていたこの記事を参照してください:jQuery + Sortable + live(法リフレッシュ付き特別答え)

これはあなたにいくつかのポインタを与えるだろう。

0

コンテナの要素に直接バインドしているようです。代わりに、代理人メソッド(http://api.jquery.com/delegate/)を使用して、イベントを一度コンテナ要素にバインドします。この方法では、子どもたちがというコンテナの移動または追加/削除によってイベントに影響を与えません。

関連する問題