对象没有方法'live' - jQuery

时间:2013-01-25 16:26:44

标签: javascript jquery live

<script>
$(document).ready(function(){
    $('.delete').live('click', function(e){
        alert('delete');
        e.preventDefault();
    });
});
</script>
<a href='#' id='_1' class='delete'>Delete</a>

给我一​​个错误:

  

未捕获的TypeError:对象[object Object]没有方法'live'

我只是没有看到问题?

7 个答案:

答案 0 :(得分:122)

.live()是一个已弃用的函数(从1.7以上)并完全从jQuery 1.9 +中删除。

您可以使用.on().bind()方法:

http://api.jquery.com/on/
http://api.jquery.com/bind/

答案 1 :(得分:13)

  1. 如果对.live()的调用位于您自己的代码中,只需使用http://api.jquery.com/live中显示的规则将其更改为.on()

  2. 如果代码在第三方jQuery插件中,请使用jQuery Migrate插件恢复.live(),直到作者更新其插件:https://github.com/jquery/jquery-migrate#readme

  3. 在生产网站中,不要使用引用jQuery的“最新”版本的网址,例如http://code.jquery.com/jquery-latest.jshttp://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js,因为它们会在发布新版本的jQuery时自动更新如果网站不兼容,您的网站会突然中断。

答案 2 :(得分:3)

如果您使用的是jQuery 1.7+,请使用on(...)代替live(...) 检查一下:http://api.jquery.com/on/

答案 3 :(得分:3)

有一种情况,当.on()和.bind()都不起作用时:当添加事件处理程序时元素不存在。这就是live()所做的。

答案 4 :(得分:3)

http://api.jquery.com/live/

$("a.offsite").live("click", function(){ alert("Goodbye!"); });                // jQuery 1.3+
$(document).delegate("a.offsite", "click", function(){ alert("Goodbye!"); });  // jQuery 1.4.3+

$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); });        // jQuery 1.7+

答案 5 :(得分:1)

use .on

<script>
$(document).ready(function(){
    $('.delete').on('click', function(e){
        alert('delete');
        e.preventDefault();
    });
});
</script>

答案 6 :(得分:0)

有一个jQuery migrate插件(使用它).......它将解决问题

ASP.NET MVC ajax-unobtrusive + jQuery 1.9 http://bugs.jquery.com/ticket/13220