jQuery replaceWith只工作一次

jQuery replaceWith只工作一次,jquery,replacewith,Jquery,Replacewith,我试图用另一个元素替换一个元素。它只工作一次,然后当我再次尝试单击元素.two时,它不会调用该函数 这是代码,它围绕着一个django for循环。这就是为什么我需要使用$(this): {%用于图像中的图像%} {%endfor%} $('.two')。在('click',更改内容); 函数更改\u内容(){ var one=$('.galery').find('.one')) $(此)。替换为(“”) 一。替换为(“”) } 这是因为新的.two是动态添加的,但在新的.twodiv存在之前

我试图用另一个元素替换一个元素。它只工作一次,然后当我再次尝试单击元素
.two
时,它不会调用该函数

这是代码,它围绕着一个django for循环。这就是为什么我需要使用
$(this)


{%用于图像中的图像%}
{%endfor%}
$('.two')。在('click',更改内容);
函数更改\u内容(){
var one=$('.galery').find('.one'))
$(此)。替换为(“”)
一。替换为(“”)
}

这是因为新的
.two
是动态添加的,但在新的
.two
div存在之前,单击处理程序已附加到现有的
.two
div。您需要将处理程序附加到始终存在的元素,然后使用该元素来处理对子元素的单击。这称为事件委派。在jQuery中,可以这样做:

$('.galery').on('click', '.two', change_content);
$('.galery').on('click', '.two', change_content);

因此,
.galery
响应对它及其子项的所有单击,如果单击目标与调用(
.two
)中的选择器匹配,它将调用处理函数。

因为您使用了
.replaceWith()
,带有类
two
span
已动态添加到DOM中,因此在您将所有事件附加到此
span
之前,所有事件都将不可用

在这种情况下,您可以使用

事件委派允许我们将单个事件侦听器附加到 父元素,将为与选择器匹配的所有子元素激发, 无论这些孩子现在存在还是将来被添加

$('.galery').on('click', '.two', change_content);