Uncaught TypeError: Object [object Object] не имеет метода '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);           
    })
})

Любая помощь приветствуется.

Ответы на вопрос(4)

Вы должны использовать jQuery версии 1.7+, чтобы использоватьon(). bind() устарела.

 18 мая 2013 г., 18:51
Спасибо, не знаю, почему люди проголосовали против, но я поставил 1.7, и это сработало!
Решение Вопроса

Вы должны использоватьbind вместоon, какon был введен только вJQuery 1,7.

$(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);           
    })
})
 06 июн. 2012 г., 12:32
проверкаthe documenation возможно, тоже помогло ...
 dvlden06 июн. 2012 г., 12:26
Вау, это был быстрый человек ... 12 минут, пока я не смогу принять ответ. Я проверю это как правильное ... прекрасно работает!
 06 июн. 2012 г., 12:27
@ Алекс - В этом случаеbind а такжеon функционировать таким же образом. Селектор не передаетсяon, что заставило бы его делегировать обработчик события.
 06 июн. 2012 г., 12:35
конечно каждый выбирает для себя :) мне хорошо, потому что это решает проблему - и это был ответ на удалённый комментарий
 06 июн. 2012 г., 12:34
@ F.Calderan Ответ не относится кwhy об этом вообще, хотя вопрос никогда не спрашивает, почему. Он просто говорит «это исправление», не объясняя, в чем была первоначальная проблема; Я позволю людям самим решать, является ли это полным ответом.

Изменитьon функция кbind:

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

Вы могли бы использоватьdelegate(), например:

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

Это эквивалентно следующему коду, написанному с использованиемon():

$("table").on("click", "td", function() {
  $(this).toggleClass("chosen");
});
 24 нояб. 2013 г., 08:34
К вашему сведению: по состоянию на JQuery 1,7delegate() был замененon()
 21 апр. 2013 г., 17:52
Хотя эквивалентности, которые вы описываете в своем ответе, верны,delegate() являетсяnot эквивалентно использованию OPon() в вопросе (он прикрепляет элемент непосредственно к.theImageгде, как вы делегировать другому элементу).

Ваш ответ на вопрос