Прежде всего, вы не должны иметь несколько элементов #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
s к своему комментарию <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/