Javascript Jquery mobile中选择选项中的问题

Javascript Jquery mobile中选择选项中的问题,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,我有一个包含输入文本和选择选项和按钮的表。单击按钮时,表行被克隆。除了“选择”选项外,其他一切都正常工作。克隆表行后,选择选项不显示我选择的内容。这是JSFIDLE 类似Javascript的代码 var b = 1; function cloneRow() { var row = document.getElementById("table"); var table = document.getElementById("particulars"); var clone = row.row

我有一个包含输入文本和选择选项和按钮的表。单击按钮时,表行被克隆。除了“选择”选项外,其他一切都正常工作。克隆表行后,选择选项不显示我选择的内容。这是JSFIDLE

类似Javascript的代码

var b = 1;

function cloneRow() {

var row = document.getElementById("table");
var table = document.getElementById("particulars");

var clone = row.rows[1].cloneNode(true);
var clones = row.rows.length;

var workerName = clone.cells[0].getElementsByTagName('input')[0];
var position = clone.cells[2].getElementsByTagName('select')[0];
var date1 = clone.cells[3].getElementsByTagName('input')[0];
var fromHr = clone.cells[4].getElementsByTagName('input')[0];
var toHr = clone.cells[5].getElementsByTagName('input')[0];
var add = clone.cells[1].getElementsByTagName('input')[0];

workerName.id = "workerName" + b;
position.id = "position" + b;
date1.id = "date1" + b;
fromHr.id = "fromHr" + b;
toHr.id = "toHr" + b;
add.id = "add" + b;
$(date1).datebox();
table.appendChild(clone);
b++;

}
我也提到了这一点


但是没有成功。请提出一些解决方案。

问题在于jQuery Mobile将许多元素(例如select)重新创建为非本机小部件,然后将函数绑定到某些事件。当您只是克隆行时,您不会得到事件绑定,因此您需要做的是实际附加原始html——它在重新呈现之前的样子——然后触发create方法:

var template="<tr><td>..your row here..</td></tr>";
$("#particulars").append(template).parent().trigger('create');
var template=“…此处的行…”;
$(“#详情”).append(模板).parent().trigger('create');
我有一把勉强工作的小提琴,但我删除了你的许多代码,这样我就可以很容易地说明我在说什么。

看来,jQuery mobile无法识别克隆的用户

您可以做的是删除selectmenu,然后仅重新添加HTML
select
,然后使用
selectmenu()对其进行初始化

$('.ui select',clone.remove();
clone.cells[2].appendChild(位置);
$(位置)。选择菜单();
参见修改的

更新:

我只是跟着找到了@malko's,这比移除和重新插入要优雅得多。这就把它简化为

$(位置)。最近('.ui-select')。替换为(位置);
$(位置)。选择菜单();

请参见

我认为您通过使用答案解决了选择选项问题。还有一个问题你需要解决。问题是最后两列(fromHr和toHr)的时间选择器

要解决这个问题,您需要在javascript代码中添加以下行

$(fromHr).datebox();
$(toHr).datebox();
因为这些行是动态创建的。因此,您需要添加上面的行来显示fromHr和toHr中的时间选择器


查看此工作

我也遇到了同样的问题,通过在克隆之前调用原始选择框上的selectmenu(“销毁”),然后通过调用selectmenu()重新初始化选择框,解决了此问题克隆后,选择被附加。

@HüseyinBABAL感谢您的回复。.在我的浏览器和android设备中,它不会改变…是的,我不会为您编写整个页面的代码-我给了您一个起点。我会尝试,如果它工作正常,我会立即接受您的答案。