1

我遇到的问题是我的jquery ui 对话框只打开一次

所以我尝试了这个:

/* 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');
});

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

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

4

1 回答 1

1

当您调用.dialog({})div 时,它会附加到body元素并包裹在辅助 div 中。由于 div 已移动,您无法再使用 parent/sibling/children 选择器定位该 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

于 2013-10-11T09:51:30.503 回答