8

我的 Web 框架自动将我的 jQuery 脚本更新到当前的最新版本 1.9。

现在我的所有:

$(".myclass").live("click", function() {...

别再工作了。我主要将它与一些在我的页面中填充 html 的 ajax 一起使用。

我会知道如何在上一个版本中替换此功能。一位朋友告诉我改用“on”,但“on”仍然固定在同一个元素上。

说明,在这个例子中(没有 ajax),我使用一个“+”图标来显示一个“ul li list”。

$(".closed").live('click', function(){
    $("#ul_list_"+$(this).attr('id')).addClass("displayed").removeClass("hidden").show();
    $(this).addClass("openned").removeClass('closed');
    $(this).html('<i class="icon-minus"></i>');
});

$(".openned").live('click', function(){
    $("#ul_list_"+$(this).attr('id')).addClass("hidden").removeClass("displayed").hide();
    $(this).addClass("closed").removeClass('openned');
    $(this).html('<i class="icon-plus"></i>');
});

(我知道该脚本不是有史以来最优化的,但它确实有效。我使用类来打开或关闭我的列表。如果访问者没有启用 JS,则不会隐藏任何内容,打开所有折叠列表)

笔记:

4

3 回答 3

25

文档已经提供了一个示例:

根据其继承者重写 .live() 方法很简单;这些是对所有三种事件附件方法进行等效调用的模板:

$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+

所以:$(document).on("click", ".closed", function() { ... })

于 2013-01-23T12:23:04.760 回答
7

您需要on与委托处理程序一起使用:

$('#parent').on('click', '.closed', function() {
   // your code...
});

请注意,您应该替换为页面加载时可用#parent的最接近的父元素.closed- 通常.closed是附加到的元素。

于 2013-01-23T12:23:26.313 回答
1

你必须使用on而不是live。因为 live 在版本 1.7 上已弃用

于 2013-01-23T12:22:53.733 回答