我有两个代码。这个就像一个魅力 -
$("input:radio").on('change',showRatingSection);
但是这个抛出“对象没有方法'直播'”错误 -
$("input:radio").live('change',showRatingSection);
任何想法为什么?
如果我认为您无法在radios
上调用实时方法,那么我将如何绑定radios
上将要添加到我的DOM
的事件?我知道我可以在添加后尽快绑定,但如果它不能与live()
一起使用,我正在寻找radios
的替代方案。
答案 0 :(得分:2)
使用最好的方法!
$("body").delegate('input:radio','change',function(){
//do code here
});
这项工作与AJAX,没有ajax。我和#34; live"有类似的问题。功能也是如此,但由于我在任何地方使用它,我都没有问题。
答案 1 :(得分:2)
您可以尝试这个,它被称为Event Delegation:在DOM中动态生成的元素,您可以使用以下语法触发事件
$(document.body).on('click', "input:radio", showRatingSection);
自.live()
的1.7版本以来,和jQuery
已被弃用
document.body
指的是DOM中最接近的父元素
答案 2 :(得分:1)
委派活动:
$(document).on('change', "input:radio", showRatingSection);
"对象没有方法'直播'"
是的,因为在最新的jQuery版本中,live已被删除。
我正在寻找live()的替代方案
是的,根据本回答和其他人的建议你有一个警告,使用.on()
它有一个特殊的语法。
$(document).on('event', "selector", function);
委派给$(document)
是非常昂贵的(就性能而言)所以你应该总是尝试委托给最近的静态父(可以在doc准备好了)
如果您委托给最近的静态父项,那么您应该将该事件放在doc ready
块中,但如果您委托给$(document)
,则无需将其放入doc准备好了。