0

我正在尝试从 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,关闭按钮将不再起作用

我认为代表团不见了。

任何想法?

4

4 回答 4

4

貌似#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");
});
于 2013-06-06T11:40:55.283 回答
2

您应该使用任何最接近的静态父元素(或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() { ... });
于 2013-06-06T11:40:57.990 回答
1

.live()方法在 jQuery 1.10 及更高版本中已弃用。使用.on()方法来附加事件处理程序。

所以你可以使用这个代码而不是 .live()

 $(document).on('click', '#detail_content .close', function(){
      //your Code
 });

我认为这个答案对你很有用,在这个页面中你可以看到所有不推荐使用的方法,它对想要从 1.7 迁移到 1.10 的人很有用

于 2013-07-31T05:39:26.863 回答
0

视觉,只用下面的不一样吗?

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

上面的代码是否存在某种速度较慢或效率较低的问题?

于 2013-06-11T16:33:21.700 回答