jQuery UI Dialog移动我的DOM内容

时间:2013-10-11 09:33:13

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

我遇到的问题是jquery ui dialog was only opening once

所以我尝试了这个:

/* Prepare */
$('.steps > div.step-1 .bicicleta .attributos').dialog({
            autoOpen:false,
            width: 600,
            modal: true
});
            /* Trigger */
$('.steps > div.step-1 .bicicleta > .info > .img').on('click',function(){
            alert($(this).parents('.bicicleta').find('.attributos').length);
            $(this).parents('.bicicleta').find('.attributos').dialog('open');
});

问题是他们似乎可以在click事件中找到.attributos类,我查看了firebug,实际上,内容被移到了UI对话框的

旁边

知道如何防止这种情况吗?

1 个答案:

答案 0 :(得分:1)

当您在div上调用.dialog({})时,它会附加到body元素并包含在辅助div中。由于div已移动,您无法再使用父/兄弟/子选择器找到该div。

一种可能的解决方案是使用ID引用对话的div。这是一个粗略的概述:

var id = $('.steps > div.step-1 .bicicleta .attributos').uniqueId().attr('id');
$('#' + id).dialog({
    autoOpen: false
});
$('.steps > div.step-1 .bicicleta > .info > .img').data('linked-dialog-id', id).on('click', function () {
    var id = $(this).data('linked-dialog-id');
    $('#' + id).dialog("open");
});

如果需要,uniqueId会为指定的元素添加唯一ID。