9

我对 jquery 1.9.1 有疑问。我已经搜索过了,但这些并没有解决我的问题。

    $('.sm2_expander').live('click', function() {
    $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed');
    return false;
});

每个人都说“使用'on'函数”但是这次我的代码永远不会工作。

$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); }); 

编辑:这是我使用的项目页面:可拖动链接

4

6 回答 6

15

在您的示例中,您使用了选择器a.offsite,但页面中没有与此选择器匹配的元素。这可能是它不起作用的原因。

$(function(){
    $(document).on('click', '.sm2_expander', function(){
        alert('bye');
        $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed');
    })
})

我认为您可以将其缩短为

$(function(){
    $(document).on('click', '.sm2_expander', function(){
        $(this).closest('li').toggleClass('sm2_liOpen sm2_liClosed');
    })
})
于 2013-03-22T15:43:55.123 回答
9

.live() 是在 jQuery 1.3 中引入的,因此它不适用于早期版本。

.live() 在 jQuery 1.7 之后也被弃用了。

替代方案是 .on() 和 .delegate()

请参阅相关问题 jQuery 1.9 .live() is not a function on how to migrate existing code。

我使用了“jquery-1.8.3.min.js”,我的问题解决了。

于 2014-07-28T12:00:13.113 回答
6

试试这个:- http://jsfiddle.net/trdb9/

JS:-

$(document).on("click", "a.offsite", function () {
    alert("Goodbye!");
});

HTML:-

<a class="offsite">Click Me</a>
于 2013-03-22T15:21:44.417 回答
3

您需要使用jquery-migrate-1.1.1.min.js或更高。我想会有很大的变化jquery,一个是让每个依赖于.live寻找新方法的人。

无论如何,尝试一下,它应该可以工作。

于 2013-05-27T20:11:10.227 回答
2

尝试在您的代码中live替换为。on

 $('.sm2_expander').on('click', function() {
    $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed');
    return false;
});
于 2013-03-22T15:17:06.090 回答
0

如果你有一个实时站点,我会推荐使用 jQuery Migrate

https://github.com/jquery/jquery-migrate/

它将自动添加已弃用但需要的功能。

于 2015-05-07T07:12:27.463 回答