Jquery从1.7到1.10.1的迁移



我正在尝试从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()方法附加事件处理程序。

所以你可以用这段代码来代替。live()
 $(document).on('click', '#detail_content .close', function(){
      //your Code
 });

我认为这个答案对你很有用,在这个页面上你可以看到所有被弃用的方法,它对那些想要从1.7迁移到1.10的人很有用

VisioN,仅仅使用以下内容不一样吗?

$(document).ready(function(){
    $(".close").click(function(){
        console.log("clicked");
    }
});

上面的代码是不是比较慢或者效率比较低?

相关内容

  • 没有找到相关文章

最新更新