我有以下场景:
我有一个表有一个trs,当用户点击“复制”链接时,所有都有一个“复制”链接,父tr被克隆并附加到表中,现在的问题是,第一次点击事件触发好了,但是第二次什么时候它发射两次,第三次发射三次等等,而且当我“克隆”了tr时,我想将点击功能绑定到这个克隆tr的“复制”链接,任何解决方案?
我试过$(‘.copy-row-link’).unbind(‘click’).click(function(){/ * code * /});
我读过类似的qns,但它们似乎没有解决我的问题
我的代码:
$(".copy-row-link").unbind('click').bind('click', function(e)
{
var strdata = 'class="viewtext" style="background-color:#FFFFFF;" id="highlight1733" onm ouseOver="highlight(\'1733\');" onm ouseOut="removehighlight(\'1733\');'
//var newTr = currTr.clone(true).addClass("viewtext").css( { "backgroundColor" : "#FFFFFF" } ).attr(;
var id = currTr.attr("id"); // currTr is set previously
var newId = id.replace("highlight", "");
//alert( newId );
newId = parseInt( newId );
newId += 1;
var newTr = currTr.clone()
.addClass("viewtext newAddedRow")
.css("backgroundColor", "#FFFFFF")
.attr('id', "highlight" + newId.toString() )
.mouseover(
function() {
highlight( newId );
}
)
.mouseout(
function() {
removehighlight( newId );
}
);
//newTr.appendTo( currTb );
newTr.hide();
newTr.insertAfter( "#" + id );
newTr.fadeIn(100);
newTr.attr('id', newId);
//e.stopPropagation();
//e.preventDefault();
//e.stopImmediatePropagation();
bindToTr(); // Bind to Tr calls this function again
return false;
});
解决方法:
由于代码不清楚,我假设上述函数可以在所有行/ TR中找到?
所以这是我的意见:
1-多次使用相同的ID,请改用class:
2-使用live方法,这样所有“new”行都将具有相同的click事件:
$(".menu-item-copyRow").live('click', function(e) {
// Code goes here
});
3-您是通过递增当前单击的ID来设置新ID?!
var id = currTr.attr("id"); // currTr is set previously
var newId = id.replace("highlight", "");
newId = parseInt( newId );
newId += 1;
您应该计算所有TR,以便您可以获得新ID,如下所示:
var newID = $('tr','#myTable').length + 1;
标签:jquery,javascript
来源: https://codeday.me/bug/20190705/1382935.html