Javascript 如果元素存在,如何将.after()用作.html()?
这是我的密码:Javascript 如果元素存在,如何将.after()用作.html()?,javascript,jquery,html,Javascript,Jquery,Html,这是我的密码: $('button')。在('click',function()上{ $('div')。之后('此元素应是唯一的(); }); 这是一个div 单击而不知道如何生成元素,在这里您可以检查一些通用解决方案,并实现您自己的逻辑 var文本; $('#text')。在('change',function()上{ text=$(this.val(); }); $('button')。在('click',function()上{ if($('div').next('p:contain
$('button')。在('click',function()上{
$('div')。之后('此元素应是唯一的();
});代码>
这是一个div
单击而不知道如何生成
元素,在这里您可以检查一些通用解决方案,并实现您自己的逻辑
var文本;
$('#text')。在('change',function()上{
text=$(this.val();
});
$('button')。在('click',function()上{
if($('div').next('p:contains('+text+'))).length){
}否则{
$('div').next('p').remove();
$('div')。在(''+text+'')之后;
}
});代码>
这是一个div
单击
可以检查元素是否存在,以及是否更新了内容。像这样的方法应该会奏效:
var index = 0;
$('button').on('click', function(){
index++;
if($('#myWrapper').length == 0) {
$('div').after('<p id="myWrapper">this element should be unique' + index +'</p>');
} else {
$('#myWrapper').html('<p>this element should be unique' + index +'</p>');
}
});
var指数=0;
$('button')。在('click',function()上{
索引++;
如果($('#myWrapper')。长度==0){
$('div')。在('之后,此元素应该是唯一的'+index+'
');
}否则{
$(“#myWrapper”).html(“此元素应是唯一的”+index+””;
}
});
JS小提琴示例:
希望有帮助 最好添加一个包装器,并替换其内容:
var$target=null;
$('button')。在('click',function()上{
if(!$target)$target=$('').insertAfter('div');
$target.html(“此元素应该是唯一的””;
});代码>
这是一个div
如果只有一个p,请单击
编辑
$('button').on('click', function() {
if (!($('div').next('p').length)) {
$('div').after('<p>this element should be unique</p>');
}else{
$('div').next('p').html('this will replace');
}
});
$('button')。在('click',function()上{
如果(!($('div').next('p').length)){
$('div')。之后('此元素应是唯一的();
}否则{
$('div').next('p').html('this will replace');
}
});
更改.on('click'
更改为.one('click'
@j08691实际上,每次用户单击按钮时,我都需要执行该函数,而不是一次。为什么要使用.after()而不是.html()?@Kweis因为没有包装器。为什么不使用包装器?这不是我需要的,我需要替换新内容。!不仅仅是防止附加。@stack我编辑了答案,仍然不确定你是如何使用代码的。检查代码段这不是他要的。如果不对布局和代码做一些假设,我不知道I don’我不认为有任何其他的方法可以通用。你只是在替换,他想使用after和html。所以你需要在替换后开始插入和。请告诉我是否可以用另一个元素替换一个元素?这是我当前的结构
,我想要这个结构
(我将
替换为
)。这可能吗?@stack是的,您可以使用任何HTML字符串。但是请注意,在DOM中,它将被包装在div
元素中,就像这是一个div。或这是一个div…。
这很糟糕,您将放在中。我没有注意到Kweis,只有拷贝粘贴。@Kweis我的意思是“那还不错”是这个答案的想法。@Oriol是的,你是对的,这可能会有问题,实际上主要问题是缺少包装。@Oriol,狙击手是根据给出的示例制作的,在这种情况下,这是一个div此元素应该是唯一的click@stack没错。这就是为什么我回答你应该加一个包装。你应该澄清为什么你不能更改结构并添加包装器。@堆栈为什么不在添加标记时只包含id?我用了一个更好的示例更新了答案。@Oriol看,我知道,你的解决方案是最标准的。但我是团队的一员,我的职责只是js编码。我不访问HTML代码。