Javascript 从页面调用时Jquery事件处理程序不工作
我已经编写了一个事件来将数据保存在widget.js文件中&处理程序在页面上。没有出现错误或异常,但未调用处理程序。请帮忙 Widget.js: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: "",
(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);
}});
我可以看到两个可能的问题:
discussionwidget
,但您使用iddiscussionwidget
进行绑定尝试修复这两个问题。看起来事件委派在全局事件中无法正常工作
$('#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,它工作起来很有魅力。