我的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,没有隐藏任何内容,所有折叠列表都是开)
注意:
答案 0 :(得分:25)
docs已经提供了一个示例:
根据其后继者重写.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() { ... })
。
答案 1 :(得分:7)
您需要将on
与委派处理程序一起使用:
$('#parent').on('click', '.closed', function() {
// your code...
});
请注意,您应该将#parent
替换为页面加载时可用的.closed
最近的父元素 - 通常是附加.closed
的元素。
答案 2 :(得分:1)
您必须使用on
代替live
。因为版本1.7上不推荐使用live