我正在使用 jQuery Mobile 的 .clone() 函数来克隆表单中的 div,这样我就可以拥有可重复的部分,但现在我遇到了嵌套选择的问题。
一旦 div 被克隆并且嵌套选择被新的 id 更新,下一次“刷新”后就会发生一些奇怪的事情。
发生的事情很奇怪,选择只是加倍并将其自身放置在现有选择中,所以结果是这样的:
浏览器是 Safari,我没有用其他浏览器进行任何测试,因为我只需要这段代码在 Safari 上运行。
我克隆 div 的方法是:
var div = $.mobile.activePage.find('.repeatable').last().clone();
克隆,然后更新 ID:
var newValue = pid +'-' + index;
$(this).attr('id', newValue);
$("label[for='"+ old +"']").attr('for', newValue);
最后,我刷新所有选择,以便在调用 .val() 后选择正确的值:
if ($(this).data('role') === 'select') {
$(this).selectmenu();
$(this).selectmenu('refresh');
}
当调用代码的最后一部分时,就会出现问题。在选择正确显示但无法正常工作之前,刷新选择后,它开始以正确的方式工作,但 UI 很混乱,因为已被加倍并放置为原始元素的子元素。
我通过以下方式在克隆按钮之前添加 div:
$('#clone_button').before(div);
这个问题的根源是什么?
Edit:看起来这可能是 jQuery Mobile 的一个错误:example.