如何使用包含id、名称和javascript的jQuery克隆元素?

如何使用包含id、名称和javascript的jQuery克隆元素?,javascript,jquery,clone,velocity,Javascript,Jquery,Clone,Velocity,我有一张桌子要复制。此表包含id和名称为的输入。此表还包含javascript <table> <tr> <td> <input type="text" id="text_1" name="text_1"/> <script> jQuery( "#text_1" ).on( "change", function() { alert("do..

我有一张桌子要复制。此表包含id和名称为的输入。此表还包含javascript

<table>
<tr>
    <td>
        <input type="text" id="text_1" name="text_1"/>
        <script>
            jQuery( "#text_1" ).on( "change", function() {
                alert("do...");
            });
        </script>
    </td>
</tr>
</table>
但我如何更改javascript的id:

jQuery( "#text_1" ).on( "change", function() {
            alert("do...");
        });   

我试图改变这一点,但如果克隆的输入改变,事件不会被抛出

你能帮我吗


多谢各位

请参见Jquery方法.clone():

供使用:

//That true param indicates that event handlers should also be cloned
var cloneElement = $("yourElement").clone(true); 

好的,但我已经为我的输入创建了宏(velocity宏),选择和其他字段和脚本在宏上集成,以避免像这样在宏外部调用javascript

#macro( textField $hasTr $hasTd $hasLabel $hasError $label $attr $size $maxLength $helpText $isReadonly $isMandatory $autofocus $beanValue $bean )
#if( $hasTr ) <tr> #end
    #if( $hasTr || $hasTd ) <td class="label"> #end
        #if( $hasLabel ) 
            #if( !$isReadonly ) <label for="$attr"> #end #text("$label") #if( !$isReadonly ) </label> #end  #if( $isMandatory ) <span class="mandatory">*</span> #end
        #end
    #if( $hasTr || $hasTd ) </td> #end
    #if( $hasTr || $hasTd ) <td class="value"> #end
        #if( $isReadonly )
            <input type="hidden" id="$attr" name="$attr" value="$!escUtils.escapeHtml( $!beanValue )" />
            <span class="readonly">$!beanValue</span>
        #else
            <input type="text" maxlength="$maxLength" id="$attr" name="$attr" value="$!escUtils.escapeHtml( $!beanValue )" size="$size" #if( $autofocus ) autofocus="autofocus" #end />
        #end

        #if( $helpText != "" )
            <img src="#media("picto/16x16/help.png")" id="${attr}_image" alt="" />
            <script>
                #set( $imageId = "${attr}_image" )
                jQuery( "#$imageId" ).qtip( {
                    prerender: true,
                    content : { text : "$!helpText" },
                    show: { delay: 1 },
                    effect: false,
                    position: { my: 'top left', target: 'mouse', viewport: jQuery(window), adjust: { x: 10, y: -15 } },
                    style: { classes: 'qtip-lgcf qtip-rounded' }
                });
            </script>
        #end
    #if( $hasTr || $hasTd ) </td> #end
    #if( $hasTr || $hasTd ) <td class="error"> #end
        #if( $hasError ) #if( $bean.errors.containsKey( "$attr" ) ) #set( $errorValue = $!bean.errors.get("$attr") ) <span>#text("$errorValue")</span> #end #end
    #if( $hasTr || $hasTd ) </td> #end
#if( $hasTr ) </tr> #end
#宏(textField$hasTr$hasTd$hasLabel$hasrerror$label$attr$size$maxLength$helpText$isReadonly$isMandatory$autofocus$beanValue$bean)
#如果($hasTr)#结束
#如果($hasTr | |$hasTd)#结束
#如果($hasLabel)
#if(!$isReadonly)#end#text($label)#if(!$isReadonly)#end#if($isMandatory)*#end
#结束
#如果($hasTr | |$hasTd)#结束
#如果($hasTr | |$hasTd)#结束
#如果($isReadonly)
$!豆值
#否则
#结束
#如果($helpText!=“”)
#set($imageId=“${attr}\u image”)
jQuery(“#$imageId”).qtip({
预渲染:正确,
内容:{text:$!helpText},
显示:{延迟:1},
效果:错,
位置:{my:'左上角',目标:'鼠标',视口:jQuery(窗口),调整:{x:10,y:-15},
样式:{classes:'qtip lgcf qtip rounded'}
});
#结束
#如果($hasTr | |$hasTd)#结束
#如果($hasTr | |$hasTd)#结束
#if($hasError)#if($bean.errors.containsKey($attr))#set($errorValue=$!bean.errors.get($attr))#text($errorValue)#end#
#如果($hasTr | |$hasTd)#结束
#如果($hasTr)#结束
结束
我应该能够在脚本中为每个字段更新id并重新加载javascript…

有两种方法。 1.使用正则表达式并用新ID替换旧ID。 2.取出javascript块并创建如下函数:

    <script>
    onTextChange = function(obj)
    {
    alert("do....");
    }
    </script>

onTextChange=函数(obj)
{
警惕(“做…”);
}
并使用textbox的change事件调用此函数

    <input type="text" id="text_1" name="text_1" onChange="onTextChange(this);"/>


您可以改用事件委派吗<代码>$(文档).on('change','input.someClass',函数(e){})?你的方式看起来很混乱。谢谢你的快速回复,但我知道这个方法。我只是在克隆javascript时遇到了麻烦…所以,编写javascript,使其不特定于该元素,并将其传递给“this”<代码>jQuery(this).on(“change”,function(){alert(“do…”);})然后使用.clone()方法。有关此主题的信息:脚本已克隆但未执行:示例如何定位元素:Hello Franck,我不知道是什么,但您可以尝试将此信息与velocity标记一起添加到问题中。(或者问一个新问题?我不知道。)
    <script>
    onTextChange = function(obj)
    {
    alert("do....");
    }
    </script>
    <input type="text" id="text_1" name="text_1" onChange="onTextChange(this);"/>