4

我正在使用 jquery UI 对话框来显示评论或其他文本,具体取决于单击的内容。

这是我的 JSfiddle 链接对话框演示

我已经使用了代码

$('.showComments').each(function () {
    var panel = $(this).parent().siblings('.divCommentDetail');
    $(this).click(function () {
        panel.dialog('open');
    });
});

$('.showContractChanges').each(function () {
    var panel = $(this).parent().siblings('.divContractChangeDetail');
    $(this).click(function () {
        panel.dialog('open');
    });
});


$(".divCommentDetail, .divContractChangeDetail").dialog({
    autoOpen: false,
    modal: true,
    open: function () {
        $(this).parent().siblings('.ui-dialog-titlebar').addClass('ui-state-error');
    },
    show: {
        effect: 'blind',
        duration: 1000
    },
    hide: {
        effect: 'explode',
        duration: 1000
    }
});

并且内容是在页面加载时动态添加的。我正在尝试使用 $(document).on('each', '.showComments', function(e) {}); 这样它就可以处理动态加载的内容,但它根本不起作用。这是我修改后的代码。

$(document).on('each', '.showComments', function () {
    var panel = $(this).parent().siblings('.divCommentDetail');
    $(this).click(function () {
        panel.dialog('open');
    });
});

但这根本不起作用。难道我做错了什么。

谢谢您的帮助。

4

2 回答 2

2

如果.divContentDetail在页面加载后动态添加,则不是您需要更改的循环,而是您正在注册的事件:

$(document).on('click', '.showComments', function () {
  var panel = $(this).parent().siblings('.divCommentDetail');
  panel.dialog('open');
});
于 2013-10-25T16:36:59.157 回答
0

.on对动态添加的元素起作用的绑定事件。但'each'它不是一个事件,它是一种方法。

你应该这样使用:

$(document).on('click', '.showComments', function () {
    var panel = $(this).parent().siblings('.divCommentDetail');


    panel.dialog('open');
});
于 2013-10-25T16:36:45.673 回答