Javascript 运行克隆功能之前,请检查元素是否已克隆

Javascript 运行克隆功能之前,请检查元素是否已克隆,javascript,jquery,Javascript,Jquery,我有一个元素应该在模态中克隆。到目前为止还有效。但当克隆功能再次运行时,模式将始终重新打开。我试图通过检查target div是否为空来避免它。但是我的if子句不能识别克隆的元素。有人能帮忙吗 $(文档).ready(函数(){ if($.trim($(“.modal body”).html())=''){ $(“.drücker”)。单击(函数(){ $(“.modal body”).append($(.p:first”).clone(true)); }); } }); 此文本应克隆到mo

我有一个元素应该在模态中克隆。到目前为止还有效。但当克隆功能再次运行时,模式将始终重新打开。我试图通过检查target div是否为空来避免它。但是我的if子句不能识别克隆的元素。有人能帮忙吗

$(文档).ready(函数(){
if($.trim($(“.modal body”).html())=''){
$(“.drücker”)。单击(函数(){
$(“.modal body”).append($(.p:first”).clone(true));
});
}
});

此文本应克隆到modal中

不应将此文本克隆到模式中

开放模态 情态标题 &时代; 接近 保存更改
您需要在单击处理程序内部执行检查。如果您使用
length
属性来检查模式中已有多少
p
元素,那么它也会更加健壮。如果一个已经存在,不要克隆另一个。试试这个:

$(函数(){
$(“.drücker”)。单击(函数(){
if($('.modal body p')。长度===0)
$(“.modal body”).append($(.p:first”).clone(true));
});
});

此文本应克隆到modal中

不应将此文本克隆到模式中

开放模态 情态标题 &时代; 接近 保存更改
在单击事件绑定之前,您已经设置了if条件,因此它将在页面加载时运行,而此时模式正文为空。但是单击处理程序get run,因为它一直处于活动状态

将if条件放入click处理程序中

$(文档).ready(函数(){
$(“.drücker”)。单击(函数(){
if($(“.modal body”).html().trim()=“”)
$(“.modal body”).append($(.p:first”).clone(true));
});
});

此文本应克隆到modal中

不应将此文本克隆到模式中

开放模态 情态标题 &时代; 接近 保存更改
只需在
.append
之前添加一个
.empty()
调用,因为您希望从一个空的模态体开始:

$(".modal-body").empty().append($("p:first").clone(true));
// -------------^^^^^^^^
实例:

$(文档).ready(函数(){
$(“.drücker”)。单击(函数(){
$(“.modal body”).empty().append($(.p:first”).clone(true));
});
});

此文本应克隆到modal中

不应将此文本克隆到模式中

开放模态 情态标题 &时代; 接近 保存更改
谢谢大家!crowder,我喜欢你的解决方案,因为不需要更长的if语句。。。或者你为什么把它留在代码里?@jakobbiebel-Sloppiness?:-D固定。