我遇到的问题是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对话框的
旁边知道如何防止这种情况吗?
答案 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。