如何使用javascript/jquery克隆/复制html表
我这里有一个问题,当我在最近复制的行上单击“复制”按钮时。它不起作用。你们知道怎么解决这个问题吗 这是我的密码如何使用javascript/jquery克隆/复制html表,javascript,jquery,Javascript,Jquery,我这里有一个问题,当我在最近复制的行上单击“复制”按钮时。它不起作用。你们知道怎么解决这个问题吗 这是我的密码 var controller = function(num1) { $('#copy-' + num1).click(function() { var $tableBody = $('#table_name').find("tbody"), $trLast = $tableBody.find("#tr-" + num1), $trN
var controller = function(num1) {
$('#copy-' + num1).click(function() {
var $tableBody = $('#table_name').find("tbody"),
$trLast = $tableBody.find("#tr-" + num1),
$trNew = $trLast.clone();
// $trNew.find('input').val('');
$trLast.after($trNew);
console.clear()
// refresh_index();
});
}
function refresh_index() {
$('#table_name > tbody > tr').each(function(i) {
i++;
var select = $(this).find('select');
var text = $(this).find('input');
var button = $(this).find('button');
controller(i);
});
}
refresh_index();
这是我在中的代码,使用委派方法在动态创建的元素上附加单击事件。这将允许事件处理稍后添加到主体中的元素 改变
$('#copy-' + num1).click(function() {
到
$(函数(){
var控制器=功能(num1){
$('body')。在('click','复制-'+num1,函数()上{
var$tableBody=$('#table_name')。查找(“tbody”),
$trLast=$tableBody.find(#tr-“+num1),
$trNew=$trLast.clone();
//$trNew.find('input').val('');
$trLast.after($trNew);
控制台清除()
//刷新索引();
});
}
函数刷新_索引(){
$('#表名称>tbody>tr')。每个(函数(i){
i++;
var select=$(this.find('select');
var text=$(this.find('input');
var button=$(this.find('button');
控制员(i);
});
}
刷新索引();
});代码>
不
项目
行动
1.
老鼠
复制
2.
键盘
复制
3.
班长
复制
要在动态创建的元素上附加单击事件,请使用委派方法。这将允许事件处理稍后添加到主体中的元素
改变
$('#copy-' + num1).click(function() {
到
$(函数(){
var控制器=功能(num1){
$('body')。在('click','复制-'+num1,函数()上{
var$tableBody=$('#table_name')。查找(“tbody”),
$trLast=$tableBody.find(#tr-“+num1),
$trNew=$trLast.clone();
//$trNew.find('input').val('');
$trLast.after($trNew);
控制台清除()
//刷新索引();
});
}
函数刷新_索引(){
$('#表名称>tbody>tr')。每个(函数(i){
i++;
var select=$(this.find('select');
var text=$(this.find('input');
var button=$(this.find('button');
控制员(i);
});
}
刷新索引();
});代码>
不
项目
行动
1.
老鼠
复制
2.
键盘
复制
3.
班长
复制
您在加载dom后添加它,因此它将找不到它。如果使用on函数以动态添加之前dom中的某个对象为目标,然后在“click”之后的第二个变量中添加该目标,那么它应该可以工作
$(函数(){
var控制器=功能(num1){
var newThingy='#copy-'+num1;
$(“#table_name”)。在(“click”,newThingy,function()上{
var$tableBody=$('#table_name')。查找(“tbody”),
$trLast=$tableBody.find(#tr-“+num1),
$trNew=$trLast.clone();
//$trNew.find('input').val('');
$trLast.after($trNew);
控制台清除()
//刷新索引();
});
}
函数刷新_索引(){
$('#表名称>tbody>tr')。每个(函数(i){
i++;
var select=$(this.find('select');
var text=$(this.find('input');
var button=$(this.find('button');
控制员(i);
});
}
刷新索引();
});代码>
不
项目
行动
1.
老鼠
复制
2.
键盘
复制
3.
班长
复制
您在加载dom后添加它,因此它将找不到它。如果使用on函数以动态添加之前dom中的某个对象为目标,然后在“click”之后的第二个变量中添加该目标,那么它应该可以工作
$(函数(){
var控制器=功能(num1){
var newThingy='#copy-'+num1;
$(“#table_name”)。在(“click”,newThingy,function()上{
var$tableBody=$('#table_name')。查找(“tbody”),
$trLast=$tableBody.find(#tr-“+num1),
$trNew=$trLast.clone();
//$trNew.find('input').val('');
$trLast.after($trNew);
控制台清除()
//刷新索引();
});
}
函数刷新_索引(){
$('#表名称>tbody>tr')。每个(函数(i){
i++;
var select=$(this.find('select');
var text=$(this.find('input');
var button=$(this.find('button');
控制员(i);
});
}
刷新索引();
});代码>
不
项目
行动
1.
老鼠
复制
2.
键盘
复制
3.
班长
复制
使用委托事件,如$tableBody.find('.copy').off('click').on('click',function(){})克隆tr
后的code>和bind click事件最好使用class
而不是ids
。以下是基于JSFIDLE的更新代码
var$tableBody=$('#table_name')。查找(“tbody”);
clickEvent();
函数clickEvent(){
$tableBody.find('.copy').off('click').on('click',function()){
$trLast=$(this).closest('tr'),
$trNew=$trLast.clone();
$trLast.after($trNew);
clickEvent();
});
函数刷新_索引(){
$('#表名称>tbody>tr')。每个(函数(i){
i++;
var select=$(this.find('td').eq(0).text(i);
});
}
刷新索引();
}
不
项目
行动
1.
老鼠
复制
2.
键盘
复制
3.
班长
复制
使用委托事件,如$tableBody.find('.copy').off('click').on('click',function(){})克隆tr
后的code>和bind click事件最好使用class
而不是ids
。下面是基于o的更新代码