如何更换“活”从jQuery的1.8.3 jQuery的1.9? [重复](How to rep

2019-08-08 00:04发布

这个问题已经在这里有一个答案:

  • jQuery中谈到现场()插入() 5个回答

我的web框架自动更新我的jQuery脚本到当前的最后一个版本,1.9。

现在,所有我:

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

不工作了。 我大多与一些Ajax叫这在我的网页上填写HTML中使用它。

我想知道如何在最后的版本替换此functionnality。 一个朋友告诉我“上”,而不是使用,但“上”保持固定在相同的元素。

说明,在该示例(没有AJAX),我使用了“+”图标,以显示“UL立名单”。

$(".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,没有任何隐藏,所有的折叠列表打开)

笔记:

  • 我试过https://github.com/jquery/jquery-migrate ,但我唯一的消息是“JQMIGRATE:jQuery.fn.live()已过时”,而不是如何解决它。

Answer 1:

该文档已经提供了一个例子:

在其后继方面重写.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() { ... })



Answer 2:

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

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

请注意,您应该更换#parent与最接近的父元素.closed这是网页载入-通常是该元素.closed被追加到。



Answer 3:

您必须使用on ,而不是live 。 因为住的是过时的版本1.7



文章来源: How to replace “live” from jQuery 1.8.3 to jQuery 1.9? [duplicate]