jqueryui 打开多个对话框;应该只打开一个

标签 jquery jquery-ui dialog

我有一个包含评论的提要,并希望允许用户删除评论。下面的代码允许用户单击图像,然后会出现一个对话框,提醒用户删除。

现在,这适用于页面上的每条评论,因此单击删除按钮一次会打开多个对话框(有多少评论,就有多少个对话框)。

如何更改下面的代码,以便在单击选择器时仅显示该注释的对话框?

$('span.delete_comment_button img').click(function() { 
        $('.delete_comment_dialog').dialog('open'); 
        return false; 
});

最佳答案

首先,你不应该有多个 #delete_comment_dialog页面上的元素,因此我们将其更改为 .delete_comment_dialog 。然后你可以在注释中整体添加一个类,使用 closest 转到顶级评论包装器,以及 find 返回对话框。 HTML 看起来像这样:

<div class="comment">
    blah blah blah blah
    <span class="delete_comment_button">delete</span>
    <div class="delete_comment_dialog">first dialog</div>
</div>
<div class="comment">
    blah blah blah blah
    <span class="delete_comment_button">delete</span>
    <div class="delete_comment_dialog">second dialog</div>
</div>​

你的 jQuery 是这样的:

$('span.delete_comment_button').click(function() {
    $(this).closest('.comment')
           .find('.delete_comment_dialog')
           .dialog('open');
    return false; 
});​

演示:http://jsfiddle.net/ambiguous/VePZp/

或者,使用带有 id 的单个对话框属性,添加id回复您的评论 <div> s,并传递id通过data删除的评论属性或类似属性。例如:

<div id="cmt1" class="comment">
    blah blah blah blah
    <span class="delete_comment_button">delete</span>
</div>
<div id="cmt2" class="comment">
    blah blah blah blah
    <span class="delete_comment_button">delete</span>
</div>
<div id="delete_comment_dialog">the only dialog</div>

还有:

$('#delete_comment_dialog').dialog({
    autoOpen: false,
    close: function() {
        // 'close' handler just for demonstration purposes.
        alert($('#delete_comment_dialog').data('kill-this'));
    }
});
$('span.delete_comment_button').click(function() {
    var $cmt = $(this).closest('.comment');
    $('#delete_comment_dialog').data('kill-this', $cmt[0].id);
    $('#delete_comment_dialog').dialog('open');
    return false; 
});​

演示:http://jsfiddle.net/ambiguous/M4QM6/

关于jqueryui 打开多个对话框;应该只打开一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287340/

相关文章:

jQuery 拖放返回 "Object has no method ' appendChild'"错误

Java-从日期选择器获取日期时添加时区

asp.net-mvc-3 - ASP.NET MVC 3 : model-level client-side or remote validation

java - 我想在一个对话框中显示多个输出。我该如何实现这个目标?

android - android 中对话框中 ListView 的高度未根据 ListView 中的项目数设置;当选项数量较少时会出现空白

javascript - 在 jQuery 中切换 AJAX 响应

javascript - onclick 获取元素 id 结果 undefined jquery

jquery-ui - 如何使用 jQuery 在折叠和展开时在加号和减号之间切换?

javascript - 设置默认单选按钮 + 关联的 Div

android - 如何在屏幕上显示警告框时禁用后退按钮