首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从JQuery小部件返回值

从JQuery小部件返回值
EN

Stack Overflow用户
提问于 2013-05-22 20:01:43
回答 2查看 1.5K关注 0票数 4

我已经创建了一个JQuery小部件来弹出一个对话框,并从该对话框中提供要接受的值

我的函数定义对话关闭

代码语言:javascript
运行
复制
 _ebSaveDialogue: function () {
     //Saving Dialogue
     $('#ebDialogueClose').click(function () {
         var text = $('#ebPlaceholder').val();
         returnText = text;
         $('#ebDialogue_div').dialog("close");
     });
 }

如何在关闭对话时获取html页面中的returnText值?

我尝试调用html中的变量,但它返回null,因为对话既没有打开也没有关闭。我想在对话结束时接收Html格式的数据

小部件

代码语言:javascript
运行
复制
 $.widget('custom.DivPopUp', {

     //Call Constructor
     _create: function () {
         var returnText;
         this._ebDefineDiv();
     },

     _ebDefineDiv: function () {
         if ($("#ebDialogue_div").length == 0) {
             //Bringing Dialogue box
             $("body").append("<div id='ebDialogue_div' title='Expression Builder'></div>");
             var inDialogueDiv = "<div id='ebLeftPanel'></div><div id='ebRightPanel'></div>";
             inDialogueDiv += "<div id='ebSample_div' title='Sample'></div>";

             $('#ebDialogue_div').append(inDialogueDiv);

             this._ebCreateDialoge();
             this._ebSaveDialogue();
         }
     },
     _ebSaveDialogue: function () {
         //Saving Dialogue
         $('#ebDialogueClose').click(function () {
             var text = $('#ebPlaceholder').val();
             returnText = text;
             $('#ebDialogue_div').dialog("close");
         });
     }
 }(jQuery));

Html

代码语言:javascript
运行
复制
$('#Id').DivPopUp();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-22 20:21:46

使用JQuery,您可以trigger自定义事件。

根据您的代码提供了一个示例:

代码语言:javascript
运行
复制
_ebSaveDialogue: function () {
     //Saving Dialogue
     $('#ebDialogueClose').click(function () {
         var text = $('#ebPlaceholder').val();
         returnText = text;
         $('#ebDialogue_div').dialog("close");
         $('#ebDialogue_div').trigger('save_action', returnText);
     });
 }

然后,从脚本中的任何其他点为该事件设置event listener

代码语言:javascript
运行
复制
$('#ebDialogue_div').on('save_action', function(event, returnText){
    alert(returnText);
});
票数 2
EN

Stack Overflow用户

发布于 2013-05-22 20:10:45

您需要添加一个callback

所以

代码语言:javascript
运行
复制
$.widget('custom.DivPopUp', {

     //Call Constructor
     _create: function () {
         var returnText;
         this._ebDefineDiv();
     },

     _ebDefineDiv: function () {
         if ($("#ebDialogue_div").length == 0) {
             //Bringing Dialogue box
             $("body").append("<div id='ebDialogue_div' title='Expression Builder'></div>");
             var inDialogueDiv = "<div id='ebLeftPanel'></div><div id='ebRightPanel'></div>";
             inDialogueDiv += "<div id='ebSample_div' title='Sample'></div>";

             $('#ebDialogue_div').append(inDialogueDiv);

             this._ebCreateDialoge();
             this._ebSaveDialogue();
         }
     },
     _ebSaveDialogue: function () {
         //Saving Dialogue
         $('#ebDialogueClose').click(function () {
             var text = $('#ebPlaceholder').val();
             returnText = text;
             $('#ebDialogue_div').dialog("close");
             this._trigger( "complete", null, { value: 100 } );
         });
     }
 }(jQuery));

然后

代码语言:javascript
运行
复制
 $('#Id').DivPopUp({complete:function(event, data) {
     var returnText = data.value;
 }});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16691221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档