2012-04-27 7 views
3

ロードされていない要素に関数をアタッチ:テーブルがすでにロードされている場合、これは、正常に動作しますjqueryのは:まだ私は、特定のテーブルの各番目の要素に関数を添付し

$(document).ready(function() 
{ 
    $('#table_id thead th').each(function() 
    { 
     $(this).disableTextSelect(); // disableTextSelect() is user defined function extending jquery 
    }); 
} 

。 これをテーブルにアタッチするには、将来ロードされる場合は.on()を使用する必要があります。しかし、私はあなたを想定してい

+0

今後どのようにテーブルを読み込んでいますか?イベントがロードされたら登録します。あなたはまだ存在しないもののためにイベントを登録することはできません。 – FlavorScape

+0

@FlavorScape:それはまったく間違っているのではないかと心配しています。 –

答えて

2

をクリックしてイベントをバインドしたい ファントム、

$(document).on('which event?!', '#table_id thead th', function() 
{ 
    $(this).disableTextSelect(); 
}); 

はどうもありがとうございましたか:-(わからないのですか?将来のために

$(document).on('click', '#table_id thead th', function() { 
    $(this).disableTextSelect(); 
}); 

jQueryのドキュメントには、すべてのjQueryのイベントのリストが含まれています。これは、hereです。

0

テーブルがページの一部である場合は、準備が整うまでに準備が整うはずですイベント。

テーブルをAJAXでロードする場合は、.ajax()(または​​など)から返されたオブジェクトを使用し、ロジックをこのオブジェクトの.success()メソッドに渡す必要があります。

理論的には、ロードイベントがありますが、それは信頼できません。理論的にも、AJAXリクエストの成功にアタッチすることができます。それから、関数が終了すると関数自体が切り離されますが、これは少し面倒かもしれません。

0

私はうまくいくものを知っていますが、どの程度実現可能かはわかりません。関数に必要なものをラップします。

function somename() { 
    $('#table_id thead th').each(function() 
    { 
     $(this).disableTextSelect(); // disableTextSelect() is user defined function extending jquery 
    }); 
} 

一度呼び出しsomename()現在ロードされている要素のためにそれを活性化し、あなたが選択をフィットする新しい要素をロードするたびに、それを呼び出します。私はこれがうまくいくことは知っていますが、私はそれを使うことが効果的であるかどうかわかりません。

1

私は同じ問題に会った、と私は.delegate("","load")を使用しますが、これらのイベントはdelegateの実現は、それに基づいていないbubble、できながらのでdelegateイベントload,unload,change,blur,focusと将来の要素をバインドすることはできません。
最後に私はclickでイベントをバインドしています。

var itv = setInterval(function(){ 
    var el = $("#table_id"); 
    if(el.length > 0){ 
     el.find('thead th').each(function(){ 
      $(this).disableTextSelect(); 
     }); 
     clearInterval(itv); 
    } 
},100); 

をuにこの意志は役に立ち月:あなたは本当にloadイベントをバインドする必要がある場合は
、私はあなたの代わりにsetIntervalを使用することができると思います。 :)

関連する問題