Javascript 为什么replaceAll方法添加的元素比我实际拥有的多?
我正在学习jquery,并且遇到了replaceAll方法。根据我的理解,replaceAll方法会删除带有另一个元素或选择器的目标选择器。我创建了一个简单的示例,其中有几个h4标记,每个标记都有一个具有不同颜色的不同类。当你点击按钮时,蓝色的类应该取代红色的类。这是可行的,但我得到的蓝色标题比我需要的多。这是你的电话号码 HTML JQueryJavascript 为什么replaceAll方法添加的元素比我实际拥有的多?,javascript,jquery,css,Javascript,Jquery,Css,我正在学习jquery,并且遇到了replaceAll方法。根据我的理解,replaceAll方法会删除带有另一个元素或选择器的目标选择器。我创建了一个简单的示例,其中有几个h4标记,每个标记都有一个具有不同颜色的不同类。当你点击按钮时,蓝色的类应该取代红色的类。这是可行的,但我得到的蓝色标题比我需要的多。这是你的电话号码 HTML JQuery $('button').click(function(){ $('.blue').replaceAll('.red'); }); 这是因为$('
$('button').click(function(){
$('.blue').replaceAll('.red');
});
这是因为$('.blue')
匹配三个
元素
因此,每个$('.red')
将替换为三个
你想要的是:
$('<h4 class="blue">This is a header</h4>').replaceAll('.red');
$('thisaheader').replaceAll('.red');
这是因为$('.blue')
匹配三个
元素
因此,每个$('.red')
将替换为三个
你想要的是:
$('<h4 class="blue">This is a header</h4>').replaceAll('.red');
$('thisaheader').replaceAll('.red');
替换所有工作如下:
选择所有.blue
元素(共3个)
查找第一个.red
并将其替换为所有3个选定的.blue
div
继续下一步.red
并重复
您只需要选择一个.blue
(我用:first
选择了第一个):
$(“按钮”)。单击(函数(){
$('.blue:first').replaceAll('.red');
});代码>
.red{
颜色:红色;
}
蓝先生{
颜色:蓝色;
}
格林先生{
颜色:绿色;
}
替换
例1
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
替换所有工作如下:
选择所有.blue
元素(共3个)
查找第一个.red
并将其替换为所有3个选定的.blue
div
继续下一步.red
并重复
您只需要选择一个.blue
(我用:first
选择了第一个):
$(“按钮”)。单击(函数(){
$('.blue:first').replaceAll('.red');
});代码>
.red{
颜色:红色;
}
蓝先生{
颜色:蓝色;
}
格林先生{
颜色:绿色;
}
替换
例1
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
这是一个标题
在当前的实现中,您将根据对象是否具有类“蓝色”来选择所有对象,并将其替换为具有类“红色”的所有对象。因此,每个蓝色对象都将替换为x个基于.red类选择的对象
将Jquery按钮更改为单击,如下所示
$('button').click(function(){
$('.blue').removeClass('blue').addClass('red');
});
这将选择类为.blue的所有对象,然后删除.blue类并添加.red类
编辑:
查看更新的在当前实现中,您选择所有对象的依据是类是否为“蓝色”,并将其替换为类为红色的所有对象。因此,每个蓝色对象都将替换为x个基于.red类选择的对象
将Jquery按钮更改为单击,如下所示
$('button').click(function(){
$('.blue').removeClass('blue').addClass('red');
});
这将选择类为.blue的所有对象,然后删除.blue类并添加.red类
编辑:
查看更新的您阅读了吗?该方法将“用匹配的元素集替换每个目标元素”。在您的情况下,匹配的元素集包括三个蓝色项…请参阅我的类操作答案,从您所输入的内容来看,这就是您想要实现的。其他答案和您自己的实现是对象对对象的操作。您阅读了吗?该方法将“用匹配的元素集替换每个目标元素”。在您的情况下,匹配的元素集包括三个蓝色项…请参阅我的类操作答案,从您所输入的内容来看,这就是您想要实现的。其他答案和您自己的实现是对象对对象的操作。编辑.red
的HTML结构也需要调整JS代码。这不是最好的方法。编辑.red
的HTML结构也需要调整JS代码。不是最好的方法。OP只想替换对象类,而不是对象本身,因此这是一种不好的方法。例如,如果红色标题有文本“hello world”,蓝色标题有“world hello”。。。innerHTML内容也将被替换。@JokerDan,你在哪里读到的?OP声明他找到了replaceAll
,并理解它将用其他元素(包括内容)替换自己。这里我将为您引用OP:>“当您单击按钮时,蓝色类应该替换红色类。它可以工作,但我得到的蓝色标题比我需要的多。这是JSFIDLE”--此外,您的解决方案实际上完全删除了标题。看到我的答案了。@JokerDan是的,OP说他替换了元素,这是他想要的,只是副作用是重复的…@JokerDan-OP似乎使用“蓝色类”来指代具有蓝色类的元素,而不仅仅是指类本身。(这有点让人困惑和模棱两可,但我在这里看到了许多不同的人提出的其他问题,他们也这么做。)OP只想替换对象类,而不是对象本身,因此这是一种不好的方法。例如,如果红色标题有文本“hello world”,蓝色标题有“world hello”。。。innerHTML内容也将被替换。@JokerDan,你在哪里读到的?OP声明他找到了replaceAll
,并理解它将用其他元素(包括内容)替换自己。这里我将为您引用OP:>“当您单击按钮时,blue类应该是repl