web-dev-qa-db-ja.com

不明なTypeError:オブジェクト[オブジェクトオブジェクト]にはメソッド 'on'がありません

誰でも私がこれを理解するのを助けることができますか?

JQueryの最新(または最新)バージョンを使用すると、以下の小さなスクリプトが正常に機能します。ただし、jQueryの古いバージョンを使用すると、スクリプトはon関数が存在しないと言います。

古いバージョンのjQueryで動作しないスクリプトを次に示します。

$(document).ready(function () {
    $(".theImage").on("click", function(){
        // In the event clicked, find image, fade slowly to .01 opacity
        $(this).find("img").fadeTo("slow", .01).end()
        // Then, of siblings, find all images and fade slowly to 100% opacity
               .siblings().find("img").fadeTo("slow", 1);           
    })
})

どんな種類の助けも大歓迎です。

28
dvlden

bindjQuery 1.7 でのみ導入されたため、 on の代わりに on を使用する必要があります。

$(document).ready(function () {
    $(".theImage").bind("click", function(){
        // In the event clicked, find image, fade slowly to .01 opacity
        $(this).find("img").fadeTo("slow", .01).end()
        // Then, of siblings, find all images and fade slowly to 100% opacity
        .siblings().find("img").fadeTo("slow", 1);           
    })
})
75
Aelios

delegate() を使用できます。例:

_$("table").delegate("td", "click", function() {
  $(this).toggleClass("chosen");
});
_

これは、on()を使用して記述された次のコードと同等です。

_$("table").on("click", "td", function() {
  $(this).toggleClass("chosen");
});
_
3
raycchan

on()を使用するには、jQueryバージョン1.7+を使用する必要があります。 bind()は非推奨です。

1

on関数をbindに変更します。

.children().on("click",function()
to
.children().bind("click",function()

0