Javascript 为什么函数在这里不起作用-jquery?

Javascript 为什么函数在这里不起作用-jquery?,javascript,jquery,Javascript,Jquery,我想在idtest元素中复制span元素。我知道.clone工作正常。但如果我像这样使用.html。单击功能不工作。我犯错误的地方。我如何仅使用.html()实现这一点 HTML: <div id="test"> <span class="new">hi</span> </div> <div id="test1"></div> function testtt (){ $('#test').on(

我想在id
test
元素中复制span元素。我知道
.clone
工作正常。但如果我像这样使用
.html
。单击
功能不工作。我犯错误的地方。我如何仅使用.html()实现这一点

HTML:

<div id="test">
    <span class="new">hi</span>    
</div>

<div id="test1"></div>
function testtt (){

    $('#test').on('click','.new',function(){

        alert('hi');

    });

    var rr  = $('#test').html();

    $('#test').append(rr);

}    
testtt();

它不起作用的原因是您正在将元素克隆到不同的选择器(
#test1
)中,但您只需查看
#test
来侦听单击事件

我会这样做:(使用你的两个ID)


或者使用一个类作为选择器,因为类可以多次使用。

它不起作用的原因是您正在将元素克隆到另一个选择器(
#test1
)中,但您只查看
#test
来侦听单击事件

我会这样做:(使用你的两个ID)


或者将类用作选择器,因为类可以多次使用。

复制其html与克隆它不同。应用侦听器时,您可以不太具体:

 $('body').on('click','.new',function(){...

复制其html与克隆它不同。应用侦听器时,您可以不太具体:

 $('body').on('click','.new',function(){...

我对您的问题的理解是,您希望单击处理程序应用于复制的span元素

您需要更改on click事件的范围以覆盖克隆的元素,如下所示:

HTML:


我对您的问题的理解是,您希望click处理程序应用于复制的span元素

您需要更改on click事件的范围以覆盖克隆的元素,如下所示:

HTML:


为什么要在另一个js函数中包装click函数?因为附加的元素不是
#test
元素的子元素。Bcz您需要在子节点上附加click事件。即使在附加之后,click事件仍然注册到
#test
。为什么要在另一个js函数中包装click函数?因为追加的元素不是
#test
元素的子元素。Bcz您需要在子节点上附加click事件。即使在追加之后,click事件仍然注册到
#test
。或者使用类而不是id函数testtt(){var rr=$('#test').html();$('#test')。追加(rr);$(rr).val('')}testtt();为什么复制的元素字段不清晰这是另一个问题@Gauti-你也已经接受了其他人的答案,尽管与我的答案相同并在我的后面发布。或者使用类而不是id函数testtt(){var rr=$('#test').html();$('#test').append(rr);$(rr).val(';}testtt();为什么复制的元素字段不清除这是另一个问题@Gauti-你也已经接受了其他人的答案,尽管与我的答案相同,并在我的后面发布。请参考链接jsfiddle.net/hSPCr/1为什么复制的元素字段不清除这是因为你使用了.html()的字符串结果,就好像它是一个jQuery对象一样。比较一下这个fork:请参考jsfiddle.net/hSPCr/1 why copied element字段未清除的链接这是因为您将.html()的字符串结果当作jQuery对象使用。比较一下你的叉子:
$('div.clickable').on('click','.new',function(){
    alert('hi');    
});