【问题标题】:Open jQueryUI Dialog when it doesn't have an ID没有 ID 时打开 jQueryUI 对话框
【发布时间】:2014-03-05 13:26:46
【问题描述】:

点击某个元素时如何打开下面的对话框?我是否需要将其分配给某个变量(并因此执行 myDialogVariable.dialog("open") )或为其添加 ID(因此执行 $('#myDialogID').dialog("open") )?

$('body')
.append('<div title="My Dialog"><p>Some HTML</p></div>')
.dialog({
    autoOpen    : false,
    modal       : true,
    open        : function() {},
    buttons     : []    
});

$('#someElement').click(function(){
    //Open above dialog
});

【问题讨论】:

  • 最好使用IDclass。在您的情况下,您可以将其称为$('div').dialog(),但前提是此div 是您页面中唯一的div
  • @Pavlo。如果它是页面中唯一的div,那就没有这么幸运了!我的目标是确保 ID 永远不会与页面上的其他 ID 冲突。
  • Id 必须始终唯一并且您必须注意这一点以避免Id的任何重复
  • @Pavlo 是的,我知道。担心有人使用我的插件,但其余的 JS 自己做。

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


【解决方案1】:

您的问题是您无法按照定义的方式选择元素。

有几种方法可以做到这一点。

一种是(如您所推测的)将定义的元素添加到全局变量中,但这不是最好的方法。

实现目标的最简单方法是给它一个 ID。 id 必须是唯一的。如果不是,那你就有问题了。

另一种方法是添加某种自定义属性,然后选择定义了该属性的元素。但这不尊重标准,因此也建议反对。

编辑:“@Pavlo 是的,我知道。担心有人使用我的插件,但其余的 JS 自己做。” -> 你创造了一些东西,你设置了一些规则,评论它们,制作文档。如果他想使用您的插件,是否其他人(使用您的插件的人)根据您的规则进行开发。仍然...作为插件建议使用第一种方法(带有 var 的方法)。

【讨论】:

  • 我可以为插件中的所有变量添加命名空间,而不是全局变量。
  • 当然,有 999 种方法可以做到这一点。那是我的想法。
【解决方案2】:

根据您的代码,以下是一些示例:
HTML

<input id="btnOpenDialog" type="button" value="Open Dialog" />

因此,您在 body 中添加了一些 div 元素(我网站的一个更正是 - 在 div 元素中添加了 Id):

$('body').append('<div id="myDlg" title="My Dialog"><p>Some HTML</p></div>')

那么您的click 事件将如下所示:

$('#btnOpenDialog').click(function(){
  $('#myDlg').dialog();
});

同样,您应该始终注意您的 Id 必须始终唯一

这就是您所要求的吗?

【讨论】:

  • @这是您要求的吗?根据标题“在没有 ID 时打开 jQueryUI 对话框”。
  • @user1032531 如果您无权编辑此div,您可以将您的对话框称为$("div[title=\"Open Dialog\"]"),但我相信此div 是您的元素,您可以使用它无论你想要什么 - 作为一种方法,你可以设置一个像 myPersonalDialogId-bla-bla-bla 这样的 id,我认为不会有人在他的应用程序中拥有相同的 id
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 2011-10-18
  • 2012-12-19
  • 2011-07-05
  • 1970-01-01
相关资源
最近更新 更多