使用JQuery函数.live()设置超时
我有这个:使用JQuery函数.live()设置超时,jquery,live,settimeout,Jquery,Live,Settimeout,我有这个: function toggle() { $('#clbttn').fadeOut('fast'); $('#msg').fadeOut('fast'); setTimeout(function() { $('#msg').remove(); $('#clbttn').remove(); }, 200); } $('#clbttn').live('click', toggle()); 因此,我有: 未捕获的TypeError:对象#clbttn没有方法“应用”
function toggle() {
$('#clbttn').fadeOut('fast');
$('#msg').fadeOut('fast');
setTimeout(function() { $('#msg').remove(); $('#clbttn').remove(); }, 200);
}
$('#clbttn').live('click', toggle());
因此,我有:
未捕获的TypeError:对象#clbttn没有方法“应用”
有人知道我应该做什么吗?您应该将
toggle()
更改为toggle
,因为前者是一个函数调用
$('#clbttn').live('click', toggle);
您应该将
toggle()
更改为toggle
,因为前者是一个函数调用
$('#clbttn').live('click', toggle);
live已过时,jquery建议使用 从jQuery1.7开始,不推荐使用.live()方法。使用.on()来 附加事件处理程序。jQuery旧版本的用户应使用 .delegate()优先于.live() 此方法提供了将委托事件处理程序附加到 页面的文档元素,它简化了事件处理程序的使用 将内容动态添加到页面时。参见对 方法中的直接事件与委派事件,了解更多信息 信息
live已过时,jquery建议使用 从jQuery1.7开始,不推荐使用.live()方法。使用.on()来 附加事件处理程序。jQuery旧版本的用户应使用 .delegate()优先于.live() 此方法提供了将委托事件处理程序附加到 页面的文档元素,它简化了事件处理程序的使用 将内容动态添加到页面时。参见对 方法中的直接事件与委派事件,了解更多信息 信息
正如Jason所说,
live
已被弃用,应替换为上的。但是,不要这样做:
$('#clbttn').on('click', toggle);
这将不适用于动态添加的内容,因为它不会设置委派的事件处理程序。上述情况相当于
$('#clbttn').bind('click', toggle);
要在
上使用动态添加的内容,您需要:
$(document).on('click', '#clbttn', toggle);
这将告诉jQuery监听所有指向文档根的点击,并在点击来自id为clbttn
的元素时启动切换功能。如果您知道这个元素只会出现在id为foo
的div中,那么您可以更高效地将其编写为
$("#foo").on('click', '#clbttn', toggle);
正如Jason所说,
live
已被弃用,应替换为上的。但是,不要这样做:
$('#clbttn').on('click', toggle);
这将不适用于动态添加的内容,因为它不会设置委派的事件处理程序。上述情况相当于
$('#clbttn').bind('click', toggle);
要在
上使用动态添加的内容,您需要:
$(document).on('click', '#clbttn', toggle);
这将告诉jQuery监听所有指向文档根的点击,并在点击来自id为clbttn
的元素时启动切换功能。如果您知道这个元素只会出现在id为foo
的div中,那么您可以更高效地将其编写为
$("#foo").on('click', '#clbttn', toggle);
您正在将
toggle
的返回值(不是函数)传递到live
。您正在将toggle
的返回值(不是函数)传递到live
。是的,它可以工作。非常感谢。但我还有一个问题。。。为什么一个月都没问题?真的很奇怪,是的,很有效。非常感谢。但我还有一个问题。。。为什么一个月都没问题?真奇怪。