Jquery 如何克隆克隆的表行?
我有一个表,其中已经有5行了,我添加了js代码,这样当用户在最后一行中键入内容时,它会被克隆(工作正常),但当用户在克隆行中键入内容时,它不会被克隆。有人能帮我解释一下为什么它不起作用吗Jquery 如何克隆克隆的表行?,jquery,clone,rows,Jquery,Clone,Rows,我有一个表,其中已经有5行了,我添加了js代码,这样当用户在最后一行中键入内容时,它会被克隆(工作正常),但当用户在克隆行中键入内容时,它不会被克隆。有人能帮我解释一下为什么它不起作用吗 $(文档).ready(函数(){ $(“.keynum”).change(函数(事件){ 美元(“#frmOK”).val(“1”); var pid=$('#p').val(); lastval=$(“.keynum”).last().val(); 如果(lastval!=“”){ var$tableBo
$(文档).ready(函数(){
$(“.keynum”).change(函数(事件){
美元(“#frmOK”).val(“1”);
var pid=$('#p').val();
lastval=$(“.keynum”).last().val();
如果(lastval!=“”){
var$tableBody=$('tblKeyNumQty')。查找(“tbbody”),
$trLast=$tableBody.find(“tr:last”),
$trNew=$trLast.clone();
$trLast.after($trNew);
}
});
});代码>
钥匙号码
量
将更改处理程序也添加到新创建的表行中:
function keynumChange(event) {
$("#frmOK").val("1");
var pid = $('#p').val();
lastval = $(".keynum").last().val();
if (lastval != "") {
var $tableBody = $('#tblKeyNumQty').find("tbody"),
$trLast = $tableBody.find("tr:last"),
$trNew = $trLast.clone();
$trNew.change(keynumChange); // <- mind this!
$trLast.after($trNew);
}
}
$( document ).ready(function() {
$( ".keynum" ).change(keynumChange);
});
函数keynumChange(事件){
美元(“#frmOK”).val(“1”);
var pid=$('#p').val();
lastval=$(“.keynum”).last().val();
如果(lastval!=“”){
var$tableBody=$('tblKeyNumQty')。查找(“tbbody”),
$trLast=$tableBody.find(“tr:last”),
$trNew=$trLast.clone();
$trNew.change(keynumChange);//也将更改处理程序添加到新创建的表行中:
function keynumChange(event) {
$("#frmOK").val("1");
var pid = $('#p').val();
lastval = $(".keynum").last().val();
if (lastval != "") {
var $tableBody = $('#tblKeyNumQty').find("tbody"),
$trLast = $tableBody.find("tr:last"),
$trNew = $trLast.clone();
$trNew.change(keynumChange); // <- mind this!
$trLast.after($trNew);
}
}
$( document ).ready(function() {
$( ".keynum" ).change(keynumChange);
});
函数keynumChange(事件){
美元(“#frmOK”).val(“1”);
var pid=$('#p').val();
lastval=$(“.keynum”).last().val();
如果(lastval!=“”){
var$tableBody=$('tblKeyNumQty')。查找(“tbbody”),
$trLast=$tableBody.find(“tr:last”),
$trNew=$trLast.clone();
$trNew.change(keynumChange);//在处理动态添加的DOM元素时,必须将事件委托给自网页加载以来就存在的祖先元素。在这种情况下,
(不是在问题的HTML中提供的,但显然jQuery提供了一个)。即使
(即使是文档
也是所有
的祖先元素,“change”
事件仅适用于
元素和表单控件(例如
,
等)
99%的时间.on()
方法是委派事件的最佳方式。以下是最有效的模式:
$("selectorOfAncestor").on("eventType", "selectorOfTargets", eventHandler);
// So if you had <form id="OK"> wrapped around the <table>...
$("#OK").on("change", ".keynum:last", cloneLast)
// When defining the event handler (ex. function cloneLast(e) {... ) ".keynum:last" = this
另外,请注意,我通过在
周围包装一个
,并将引导类.text center
应用于
。属性[align]
已被弃用,如果没有引导,请使用CSS属性text align
还有一条建议:如果您将jQuery/JavaScript放在结束正文标记(即
)之前,那么您不需要将所有内容都包装在$(文档)中。就绪({…})
。无论您是否这样做,将
放在结束
标记之前是99%最有效的位置
演示
$('OK').on('change','keynum:last',cloneLast);
功能克隆体(e){
如果($(this.val()!=''){
$(this.nexist('tr').clone().appendTo($(this.nexist('tbody'));
}
}
$('input')。在('keypress',函数(e)上{
返回e.keyCode!=13
});
钥匙号码
量
在处理动态添加的DOM元素时,必须将事件委托给自网页加载以来就存在的祖先元素。在这种情况下,
(未在有问题的HTML中提供,但通过提供的jQuery显然存在一个)。即使
(即使是文档
也是所有
的祖先元素,“change”
事件仅适用于
元素和表单控件(例如
,
等)
99%的时间.on()
方法是委派事件的最佳方式。以下是最有效的模式:
$("selectorOfAncestor").on("eventType", "selectorOfTargets", eventHandler);
// So if you had <form id="OK"> wrapped around the <table>...
$("#OK").on("change", ".keynum:last", cloneLast)
// When defining the event handler (ex. function cloneLast(e) {... ) ".keynum:last" = this
另外,请注意,我通过在
周围包装一个
,并将引导类.text center
应用于
。属性[align]
已被弃用,如果没有引导,请使用CSS属性text align
还有一条建议:如果您将jQuery/JavaScript放在结束正文标记(即
)之前,那么您不需要将所有内容都包装在$(文档)中。就绪({…})
。无论您是否这样做,将
放在结束
标记之前是99%最有效的位置
演示
$('OK').on('change','keynum:last',cloneLast);
功能克隆体(e){
如果($(this.val()!=''){
$(this.nexist('tr').clone().appendTo($(this.nexist('tbody'));
}
}
$('input')。在('keypress',函数(e)上{
返回e.keyCode!=13
});
钥匙号码
量
这是否回答了您的问题?这是否回答了您的问题?这有一个完美的复制目标。为什么您只添加另一份答案而不是投票关闭?主要是因为on-event属性让我感到厌烦,而且一条评论似乎从来都不公平。另外,为更改选择合适的祖先也很重要您好,谢谢您的回复。它可以工作,但是我的用于检查keynumber的ajax代码对于克隆行仍然不起作用,我的ajax代码如下:Hi@TapanB