3

特定のテーブルの各 th 要素に関数を追加します。

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

テーブルがすでにロードされている場合、これは正常に機能します。それをテーブルにアタッチするには、将来ロードされる場合は .on() を使用する必要があります。しかし、方法がわかりません:-(

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

どうもありがとう、ファントム

4

4 に答える 4

2

イベントをクリックするようにバインドしたいと思いますか?

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

今後の参考のために、jQuery のドキュメントには、ここで見つけることができるすべての jQuery のイベントのリストが含まれています。

于 2012-04-27T00:15:07.320 に答える
1

私は同じ問題に遭遇し、使用.delegate("","load") しましたがdelegate、将来の要素をイベントにバインドできません。これは、load,unload,change,blur,focusこれらのイベントができずbubbledelegateそれに基づく実現ができないためです。
最後にイベントをバインドしclickて完了です。
本当にイベントをバインドする必要がある場合は、代わりに次 loadを使用できると思います。setInterval

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

これがあなたの役に立ちますように。:)

于 2014-11-10T04:47:50.153 に答える
0

テーブルがページの一部である場合は、ready イベントまでに準備ができている必要があります。

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

理論的には load イベントがありますが、信頼性はありません。理論的には、AJAX リクエストの成功にアタッチし、完了時に関数をデタッチすることもできますが、これは少し面倒かもしれません。

于 2012-04-27T00:17:26.583 に答える
0

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

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

一度呼び出しsomename() て、現在ロードされている要素に対してアクティブにし、セレクターに適合する新しい要素をロードするたびに呼び出します。これが機能することはわかっていますが、それを使用するのが効果的かどうかはわかりません。

于 2012-04-27T00:37:43.213 に答える