首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery逻辑在jQueryUI模态对话框中使用时从用户控件中触发两次

jQuery逻辑在jQueryUI模态对话框中使用时从用户控件中触发两次
EN

Stack Overflow用户
提问于 2012-11-18 04:36:39
回答 2查看 996关注 0票数 0

我有一个asp.net用户控件,用于将一堆HTML逻辑放入其中,以便在几个页面上共享。这个用户控件有一些从json调用中加载的下拉框,并且没有添加的代码背后逻辑。

当我在普通页面上使用这个用户控件时,它工作得非常好,而且完全没有问题。

但是,当我将用户控件包装在div中并使用jqueryUI模式对话框时,usercontrol中的所有内容都会触发两次。不仅在初始$(文档).ready(函数(){})中的代码,而且每个函数在调用时也会被触发两次。

在Visual中对此进行调试后,我发现所有东西都是首先从外部JS文件调用的,然后是从一个“脚本块”文件中再次调用的,该文件正在以某种方式动态生成。

这个脚本块文件不会在一个没有用模式包装用户控件的页面上生成。

如果我使用IISExpress或IIS7,也会发生同样的情况。

问题是,为什么要创建这个脚本块文件,为什么我的所有jQuery逻辑都会触发两次?

-编辑--

以下是div:

代码语言:javascript
复制
  <div id="divMyDiv" title="MyDiv">
     <uc1:MyUserControl runat="server" ID="MyUsercontrol" />
</div>

下面是使用它的模态逻辑:

代码语言:javascript
复制
        $("#divMyDiv").dialog({
            autoOpen: false,
            height: 400,
            width: 400,
            modal: true,
            open: function (type, data) {
                $(this).parent().appendTo("form");
            }
        });

注意:即使我删除了"open:“函数,问题仍然会发生。但是,如果我移除整个对话框块,则会发生而不是,因此它是特定于此对话框调用的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-18 07:31:52

我能确定到底是怎么回事。

指向外部JavaScript文件的链接位于用户控件本身中。将此链接移出用户控件并进入主页修复。

无论出于什么原因,这都阻止了动态脚本块文件的生成,因此也停止了对每个函数的两次调用。

我只需要记住将这个JavaScript链接添加到每个使用这个用户控件的页面,或者添加到我的母版页中。

如果有人知道为什么会这样,我很想知道。

票数 0
EN

Stack Overflow用户

发布于 2012-11-18 04:57:27

查看写在用户控件上的/jQuery是否会在每次登陆页面上加载。

并将有多个副本相同的javascript/jQuery代码在您的登陆页面。

如果您将加载多个用户控件,那么脚本将被触发不止一个。

它将在加载用户控件的时间内被触发。

为了克服这个地方,登陆页面上的jQuery调用。

在加载时,将您的jQuery与用户控件绑定。

编辑1

我知道您只有一个用户控件实例。

我的观点是

  1. 您正在打开页面上的用户控件。
  2. 用户控件有一个jQuery调用。
  3. 如果您要打开对话框,jQuery调用将是登陆页面的一部分。
  4. 您将关闭对话框。
  5. 你的jQuery仍然是你登陆页面的一部分
  6. 再次打开一个对话框
  7. 第二份您的jQuery写在您的用户控件加载到您的登陆页
  8. 现在您有了两个jQuery代码副本
  9. 随着时间的推移,你将打开和关闭,就像复制一样。

我想这就是问题所在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13437538

复制
相关文章

相似问题

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