Javascript 从页面调用时Jquery事件处理程序不工作

Javascript 从页面调用时Jquery事件处理程序不工作,javascript,event-handling,jquery,Javascript,Event Handling,Jquery,我已经编写了一个事件来将数据保存在widget.js文件中&处理程序在页面上。没有出现错误或异常,但未调用处理程序。请帮忙 Widget.js: (function ($, undefined) { $.widget('ui.discussionwidget', { options: { userID: 'arti.agarwa', title: "", width: "",

我已经编写了一个事件来将数据保存在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);
                }});

我可以看到两个可能的问题:

  • 您的小部件具有class
    discussionwidget
    ,但您使用id
    discussionwidget
    进行绑定
  • 您正在使用javascript动态创建小部件?可能是在创建小部件之前绑定了事件

  • 尝试修复这两个问题。

    看起来事件委派在全局事件中无法正常工作

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

    演示:

    您在哪里绑定活动?内部文档。准备好了吗?我相信这个事件根本没有绑定。第一个函数在里面(函数($,未定义){$.widget('ui.discussionwidget',{options:{userID:'arti.agarwa',title:,width:,container类:“.ui content gutter”},}一个widget,并从$(document.ready)调用(函数(){)我已经更新了codeFYI,
    .live()
    已经被弃用很久了。你应该使用
    .on()
    (使用不同的语法)相反。另外,您是否确定
    sendMessage
    将传播并因此与您正在使用的委托事件处理一起工作?我使用的是JQuery1.6,因此不能使用“on”。我在博客中读到了关于Jquery事件处理的内容,并以这种方式实现了它,代码中是否有错误?它也有一个ID作为discussionwidget,因此我确信这一点第一个。第二个,是的,我正在动态创建小部件,但我使用“live”绑定事件处理程序,所以它应该绑定它。不是吗?不,只有在文档准备就绪之前创建了小部件,它才会绑定它。如果不是这样,
    $(“#discussionwidget”)
    将不会返回任何元素。您可以使用
    警报进行检查($(“#discussionwidget”).length)
    。如果您看到0,您的小部件尚未创建,事件将不会绑定。警报($(“#discussionwidget”).length)字体它来了1@user2614405:噢,顺便问一下,您将警报放在哪里?请在绑定事件之前将其放在正确位置。内部文档已准备就绪。@user2614405:很抱歉,我认为这对您没有帮助。祝您好运解决问题:)我找到了另一个解决方案,因为我们使用的是JQ1.6&不能在上使用。我需要将它写为$.event.trigger,而不是$('#discussionwidget')。trigger,它工作起来很有魅力。