我正在使用 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);
这个问题的根源是什么?
编辑:看起来这可能是 jQuery Mobile 的错误:example。