首先,页面上不应有多个#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 属性的单个对话框,将ids 添加到您的评论<div>s,并通过data 属性或类似属性传递要删除的评论的id。例如:
<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/