0

デリゲート関数で load イベントを使用できないことは知っていますが、同様の効果を生み出すハックがあるかどうか疑問に思っていましたか? 「data-role='table'」属性を使用して、AJAX の読み込みが必要なすべてのテーブルを識別し、リクエストを初期化したいと考えています。

<script type="text/javascript">
$(document).delegate( "table[data-role='table']", "load", function(e) {
    //load AJAX Table
});
</script>

<table data-role="table" class="table-striped">
    ...
</table>

コードはjsfiddleでも利用できます

注:実行時に ($(document).ready の後) 追加のテーブルが追加される可能性があるため、デリゲートを使用する必要があります。

4

2 に答える 2

0

私の頭のてっぺんからの単なる提案ですが、次のようなものはどうですか?

$(function() { // document.ready shortcut
    $("[data-role=table]").each(function(x, item) { // for each element which has this attribute.
         // identify which actual table this is (using .index() perhaps, or by id or classname)
         // call ajax to get stuff
         // load it into the relevant place
    }); 
}

実用的なソリューションというよりもコンセプトです。それが役に立てば幸い。

于 2012-04-16T09:19:01.483 に答える
0

Webkit はいくつかの DOM ミューテーション イベントをスローしますが、それらは減価償却されているとさえ思います。

今では少し古くなっていますが、.livequery (http://docs.jquery.com/Plugins/livequery) は今でも私が知っている最良のオプションです。以下を使用できます。

$("[data-roll=table]").livequery(function() {
     ...
});

セレクターに一致する新しい要素がページに追加されるたびに、そのコールバックを起動する必要があります。

于 2012-04-16T13:37:21.727 に答える