TypeError:$(...)。live不是函数

时间:2013-03-22 15:07:19

标签: live jquery

我遇到了jquery 1.9.1的问题。我已经搜索了但这些都没有解决我的问题。

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

每个人都说'使用''功能',但这次我的代码永远不会工作。

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

编辑:这是我使用的主题页面:draggable link

6 个答案:

答案 0 :(得分:14)

在您的示例中,您使用了选择器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');
    })
})

答案 1 :(得分:7)

.live()是在jQuery 1.3中引入的,因此它不能与早期版本一起使用。

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

替代品是.on()和.delegate()

参见相关问题jQuery 1.9 .live()不是如何迁移现有代码的函数。

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

答案 2 :(得分:6)

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

JS: -

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

HTML: -

<a class="offsite">Click Me</a>

答案 3 :(得分:3)

您需要使用jquery-migrate-1.1.1.min.js或更高版本。我想jquery中会发生重大变化,其中一个变化就是让依赖.live的每个人找到新的方法。

无论如何,尝试一下,它应该有用。

答案 4 :(得分:2)

尝试在代码中使用live替换on

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

答案 5 :(得分:0)

如果您有实际网站,我建议您使用jQuery Migrate

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

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