Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么replaceAll方法添加的元素比我实际拥有的多?_Javascript_Jquery_Css - Fatal编程技术网

Javascript 为什么replaceAll方法添加的元素比我实际拥有的多?

Javascript 为什么replaceAll方法添加的元素比我实际拥有的多?,javascript,jquery,css,Javascript,Jquery,Css,我正在学习jquery,并且遇到了replaceAll方法。根据我的理解,replaceAll方法会删除带有另一个元素或选择器的目标选择器。我创建了一个简单的示例,其中有几个h4标记,每个标记都有一个具有不同颜色的不同类。当你点击按钮时,蓝色的类应该取代红色的类。这是可行的,但我得到的蓝色标题比我需要的多。这是你的电话号码 HTML JQuery $('button').click(function(){ $('.blue').replaceAll('.red'); }); 这是因为$('

我正在学习jquery,并且遇到了replaceAll方法。根据我的理解,replaceAll方法会删除带有另一个元素或选择器的目标选择器。我创建了一个简单的示例,其中有几个h4标记,每个标记都有一个具有不同颜色的不同类。当你点击按钮时,蓝色的类应该取代红色的类。这是可行的,但我得到的蓝色标题比我需要的多。这是你的电话号码

HTML

JQuery

$('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