如果没有ID,请打开jQueryUI Dialog

时间:2014-03-05 13:26:47

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

单击某个元素时如何打开以下对话框?我是否需要将其分配给某个变量(从而执行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
});

2 个答案:

答案 0 :(得分:1)

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

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

一个是(如你所假设的)将已定义的元素添加到全局变量中,但这不是最好的方法。

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

另一种方法是添加某种自定义属性,并选择定义了该属性的元素。但这不符合标准,因此也反对它。

编辑:“@帕夫是的,我知道。关注的是有人使用我的插件,但其余的JS本身。” - &GT;你创建了一些东西,你设置了一些规则,评论它们,制作文档。如果他想使用你的插件,那么另一个人的工作(使用你的插件的那个)是根据你的规则开发的。仍然......作为一个插件建议使用第一种方法(带var的方法)。

答案 1 :(得分:1)

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

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

因此,您在div中添加了一些body元素(我的网站中的一项更正已添加Iddiv元素):
< / p>

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

然后您的click事件将如下:

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

同样,您应该始终关注Id,其必须始终唯一

这就是你要求的吗?