【问题标题】:jquery dialog box: Get the dialog box ID while inside the dialog boxjquery对话框:在对话框内获取对话框ID
【发布时间】:2015-03-31 04:48:12
【问题描述】:

我有允许用户打开多个对话框的软件。无需对我在做什么进行很长的解释,是否可以从对话框中提取对话框的 ID?因此,例如,我可能有一个名为“dialog1”的对话框,然后是另一个名为“dialog5”的对话框,如果我单击这些对话框中任何一个的 HTML 中的链接(而不是单击对话框按钮),我需要知道是否它的“dialog1”或“dialog5”。

就目前而言,我看到了两个选项: 1#使用包含对话框ID的GET变量打开对话框,然后让PHP在我需要的地方回显其ID(并以任何ajax形式重新发送该信息,然后让该页面返回数据如果对话框正在刷新,等等等等)....

2# 让每个页面都有一个具有特定 id 的 HTML dom 元素,然后让 JavaScript 在加载时找到该元素,将其替换为随机生成的元素(这样不会与新对话框冲突),然后使用随机生成的元素遍历DOM动态拉取ID...

我尝试了这两种方法,似乎方法 2 更好,因为它需要更少的维护,但它是一个丑陋的解决方案(如果 DOM 发生变化,它会中断)。有没有更好的方法来完成这项工作?

【问题讨论】:

  • 当您将链接放在这些对话框中时,请使用链接data-dialog-id="#Dialog1" 的html attr 并单击获取此ID。
  • 对话框称为'dialog1'和'dialog5'的方式是什么?请发布您的代码或其简化版本。
  • 坦率地说:如果我明白你在说什么,那似乎或多或少是我使用方法 1 所做的。 ------------- Roamer-1888:现在它的“dialog1”到“dialog10”,我的代码只是寻找第一个未打开的,并使用它。但总有一天我会让这个动态化(这样用户就可以打开任意数量的文件)。

标签: jquery jquery-ui jquery-ui-dialog


【解决方案1】:

将委托的单击事件绑定到所有对话框 id 都存在于其中的外部包装器。为所有对话框使用公共类(“common-class”)。

<div class="outer-wrapper">
<div id="dialog-1" class="common-class" title="Basic dialog">
<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>
<div id="dialog-2" class="common-class" title="Basic dialog">
<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>
</div>

jQuery(".outer-wrapper").on("click",".common-class",function(){
   var dialogclick = jQuery(this).attr("id");
})

【讨论】:

  • 不确定这将如何工作?对话框中的 html 将如何触发任何内容?
  • 事件被绑定到输出包装器,并且子选择器被指定为公共类,因此在此点击的任何东西都会触发点击..
  • 似乎无法让它工作,甚至你在小提琴中的例子也没有。编辑:实际上它确实在小提琴中工作,嗯,明天再仔细看看。
  • 搞定了,问题是 $('').dialog 将这些 div 移到了 'outer-wrapper' div 之外(使 body 成为其父级)。一旦我将“外部包装器”作为一个类添加到正文中,这似乎工作正常。我会在早上调整一些东西,tnx。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
相关资源
最近更新 更多