我将一个函数附加到某个表的每个元素:
$(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();
});
非常感谢, 幻影
答案 0 :(得分:2)
我假设您要绑定事件以单击?
$(document).on('click', '#table_id thead th', function() {
$(this).disableTextSelect();
});
为了将来参考,jQuery文档包含所有jQuery事件的列表,可以找到here。
答案 1 :(得分:1)
我遇到了同样的问题,我使用.delegate("","load")
,但delegate
无法将未来元素与事件load,unload,change,blur,focus
绑定,因为这些事件不能bubble
,而delegate
{1}}基于它的实现
最后我用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);
这对你有帮助。 :)
答案 2 :(得分:0)
如果表格是页面的一部分,则应在就绪事件发生时准备就绪。
如果您通过AJAX加载表,那么您应该使用从.ajax()
(或.load()
等)返回的对象,并将您的逻辑传递给.success()
方法对象
理论上讲,有一个加载事件,但它不可靠。从理论上讲,你可以附加任何AJAX请求的成功,然后你的功能在完成时会自行分离,但这可能有点讨厌。
答案 3 :(得分:0)
我知道一些有用的东西,但我不确定它有多可行。在功能中包装你想要的东西。
function somename() {
$('#table_id thead th').each(function()
{
$(this).disableTextSelect(); // disableTextSelect() is user defined function extending jquery
});
}
调用somename()
一次为当前加载的元素激活它,并在每次加载适合选择器的新元素时调用它。我知道这会起作用,但我不知道它是否有效使用它。