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

给我一个错误:

未捕获的类型错误:对象 [object Object] 没有“live”方法

我只是没有看到问题?

4

7 回答 7

122

.live()是一个不推荐使用的函数(从 1.7+ 开始)并从 jQuery 1.9+ 中完全删除。

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

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

于 2013-01-25T16:27:45.127 回答
13
  1. 如果调用.live()在您自己的代码中,只需将其更改为使用http://api.jquery.com/live.on()中显示的规则。

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

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

于 2013-01-25T16:52:09.957 回答
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+
于 2013-06-08T11:15:49.893 回答
3

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

于 2013-01-25T16:28:25.760 回答
3

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

于 2013-02-25T19:08:06.957 回答
1

使用 .on

<script>
$(document).ready(function(){
    $('.delete').on('click', function(e){
        alert('delete');
        e.preventDefault();
    });
});
</script>
于 2013-01-25T16:29:12.700 回答
0

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

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

于 2013-02-07T18:07:21.520 回答