Pol*_*llo 8 javascript jquery jquery-1.8 jquery-1.9
我的Web框架自动将我的jQuery脚本更新为当前的最新版本1.9.
现在我的全部:
$(".myclass").live("click", function() {...
Run Code Online (Sandbox Code Playgroud)
不再工作了.我主要使用它与一些ajax调用,在我的页面中填充html.
我会知道如何在上一版本中替换此功能.一位朋友告诉我使用"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>');
});
Run Code Online (Sandbox Code Playgroud)
(我知道脚本不是最优化的,但它确实有效.我使用类来打开或关闭我的列表.如果访问者没有启用JS,则不会隐藏任何内容,所有折叠列表都会打开)
笔记:
Jon*_*Jon 25
该文档已经提供了一个例子:
根据其后继者重写.live()方法很简单; 这些是用于所有三种事件附件方法的等效调用的模板:
Run Code Online (Sandbox Code Playgroud)$(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() { ... }).
您需要使用on委托处理程序:
$('#parent').on('click', '.closed', function() {
// your code...
});
Run Code Online (Sandbox Code Playgroud)
请注意,您应该替换页面加载时可用#parent的最接近的父元素.closed- 通常.closed是附加到的元素.