我正在尝试从jquery 1.7迁移到1.10,live函数不再工作了。
$("#detail_content").on("click", ".close", function (a) { // is ignored
//$("#detail_content .close").live("click", function (a) { //works fine with migrate
console.log("click");
});
div.detail_content稍后通过ajax加载,但关闭按钮不再工作,如果我从。live更改为。on
我想代表团没来。
任何想法?
看起来#detail_content
也是一个动态的,然后尝试
$(document).on("click", "#detail_content .close", function (a) { // is ignored
//$("#detail_content .close").live("click", function (a) { //works fine with migrate
console.log("click");
});
您应该使用任何最接近的static父元素(或body
):
$("body").on("click", "#detail_content .close", function() { ... });
所以如果你有这样的标记:
<body>
...
<div id="container">
...
<div id="detail_content"><button class="close">Close</button></div>
</div>
</body>
和#container
在Ajax调用后不被替换,那么最好使用:
$("#container").on("click", "#detail_content .close", function() { ... });
在jQuery 1.10及以上版本中已弃用.live()
方法。使用.on()
方法附加事件处理程序。
$(document).on('click', '#detail_content .close', function(){
//your Code
});
我认为这个答案对你很有用,在这个页面上你可以看到所有被弃用的方法,它对那些想要从1.7迁移到1.10的人很有用
VisioN,仅仅使用以下内容不一样吗?
$(document).ready(function(){
$(".close").click(function(){
console.log("clicked");
}
});
上面的代码是不是比较慢或者效率比较低?