Обработчик событий Jquery не работает при вызове со страницы

0

Я написал событие для сохранения данных в файле widget.js, и обработчик находится на странице. Отсутствует ошибка или исключение, но обработчик не получает вызов. Пожалуйста помоги.

Widget.js:

   (function ($, undefined) {
    $.widget('ui.discussionwidget', {
        options: {
            userID: 'arti.agarwa',
            title: "",
            width: "",
            containerClass: ".ui-content-gutter"
        },
saveData: function (userName, msg, parentID) {
            //Save Discussion History
            $.event.trigger({
                type: "sendMessage",
                userName: userName,
                message: msg,
                parentID: parentID,
                timeStamp: new Date()
            });

        },
        });})(jQuery);

Скрипт страницы:

$(document).ready(function () {
        $('#discussionwidget').live("sendMessage", sendMessageHandler);
                // sendMessage event handler
                function sendMessageHandler(e) {
                    debugger;
                    alert(1);
                }});
Теги:
event-handling

2 ответа

0
Лучший ответ

Похоже, что делегирование событий не работает с глобальными событиями

$('#discussionwidget').on("sendMessage", sendMessageHandler);

Демо: скрипка

  • 0
    Я нашел альтернативу soln этому, так как мы используем JQ1.6 и не можем использовать дальше. Вместо того, чтобы писать его, $ .event.trigger, мне нужно записать его как триггер $ ('# Discussion Widget'). Это сработало как талисман.
0

Я вижу две возможные проблемы:

  1. У вашего виджета есть class discussionwidget но вы привязываетесь к id discussionwidget.
  2. Вы динамически создаете виджет с помощью javascript? Может быть, событие связано перед созданием виджета.

Попробуйте исправить оба.

  • 0
    Он также имеет идентификатор в качестве виджета для обсуждения, так что я уверен в этом. Во-вторых, да, я создаю виджет динамически, но я использую live для привязки обработчика событий, поэтому он должен связать его. Не так ли?
  • 0
    Нет, он будет привязан только в том случае, если виджет был создан до того, как документ будет готов. Если это не так, $("#discussionwidget") не вернет ни одного элемента. Вы можете проверить, используя alert($("#discussionwidget").length) . Если вы видите 0, ваш виджет еще не создан, и событие не будет связано.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню