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因为这些事件不能bubble,而delegate基于它的实现。
最后我绑定事件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()(or.load()等) 返回的对象并将您的逻辑传递给.success()该对象上的方法。

理论上,有一个加载事件,但它并不可靠。理论上,您也可以附加到任何 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 回答