web-dev-qa-db-ja.com

TypeError:$(...)。liveは関数ではありません

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!"); }); 

編集:これは私の使用しているプロジェクトのページです: ドラッグ可能なリンク

8
Enes Pekkaya

あなたの例では、セレクタ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');
    })
})
14
Arun P Johny

.live()はjQuery 1.3で導入されたため、以前のバージョンでは機能しません。

。live()もjQuery 1.7以降で非推奨になっています。

代替は.on()と.delegate()です

関連する質問を参照してくださいjQuery 1.9 .live()は、既存のコードを移行する方法に関する関数ではありません。

「jquery-1.8.3.min.js」を使用して問題を解決しました。

7
Ipsita Rout

これを試してください:-http://jsfiddle.net/trdb9/

JS:-

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

HTML:-

<a class="offsite">Click Me</a>
6
Aditya Singh

jquery-migrate-1.1.1.min.js以上を使用する必要があります。 jqueryには大きな変化があると思います。1つは、.liveに依存するすべての人に新しい方法を見つけるようにすることです。

とにかく、それを試してみればうまくいくはずです。

3
The Lone Coder

コードのliveonに置き換えてみてください。

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

ライブサイトがある場合は、jQuery Migrateの使用をお勧めします

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

廃止予定の必要な機能が自動的に追加されます。

0
Tofeeq