Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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 如何使用jQuery在不更改html的情况下更改元素的同级文本?_Javascript_Jquery_Html_Text_Replace - Fatal编程技术网

Javascript 如何使用jQuery在不更改html的情况下更改元素的同级文本?

Javascript 如何使用jQuery在不更改html的情况下更改元素的同级文本?,javascript,jquery,html,text,replace,Javascript,Jquery,Html,Text,Replace,我尝试只替换文本,但不接触任何其他标记 <p> <a href="login.php"> <i class="fa fa-sign-in"></i> Login </a> </p> 坏结果: <p> Anmeldung </p> 结果如我所愿: <p> <a href="login.php">

我尝试只替换文本,但不接触任何其他标记

<p>
    <a href="login.php">
        <i class="fa fa-sign-in"></i> 
        Login
    </a>
</p>
坏结果:

<p>
    Anmeldung       
</p>
结果如我所愿:

<p>
    <a href="login.php">
        <i class="fa fa-sign-in"></i> 
        Anmeldung
    </a>
</p>

我该怎么做?这只是一个示例,p标记的深层结构可能完全不同。

将要替换的文本换行到span或其他内容中

<p>
  <a href="login.php">
    <i class="fa fa-sign-in"></i> 
    Login
  </a>
</p>

$('p').each(function() {
  $(this).find("a").text($(this).find("a").text.replace('Login', 'Anmeldung')); 
});
<p>
    <a href="login.php">
        <i class="fa fa-sign-in"></i> 
        <span class="replace-login">Login</span>
    </a>
</p>

将要替换的文本换行到跨距或其他位置

<p>
    <a href="login.php">
        <i class="fa fa-sign-in"></i> 
        <span class="replace-login">Login</span>
    </a>
</p>

若要更改i的所有文本同级,请在p中选择i标记,并使用属性在元素后选择同级文本并进行更改

$p>a>i[0].nextSibling.nodeValue=Anmeldung;

如果要更改i的所有文本同级,请在p中选择i标记,并使用属性在元素后选择同级文本并进行更改

$p>a>i[0].nextSibling.nodeValue=Anmeldung; 你可以试试这个

你可以试试这个

使用.html而不是.text 这将保留您的html标记

$'p'。每个函数{ $this.html$this.html.replace'Login','Anmeldung'; }; 使用.html而不是.text 这将保留您的html标记

$'p'。每个函数{ $this.html$this.html.replace'Login','Anmeldung'; };
使用html而不是文本函数

$('p').html($(this).html().replace('Login', 'Anmeldung'));

使用html而不是文本函数

$('p').html($(this).html().replace('Login', 'Anmeldung'));

如果唯一可以选择的元素是p,则需要通过子元素和节点递归,并直接替换该元素中的文本。替换父级的文本将具有删除的HTMLPossible副本的效果。如果要更改部分或全部文本,为什么只使用jQuery?就像你不知道jQuery不是一种语言一样…@evolutionxbox jQuery非常适合在DOM上进行操作。如果他在应用程序中使用jQuery,为什么要使用更复杂的vanilla js解决方案呢?如果您可以选择的唯一元素是p,那么您需要通过子元素和节点递归,并直接替换该元素中的文本。替换父级的文本将具有删除的HTMLPossible副本的效果。如果要更改部分或全部文本,为什么只使用jQuery?就像你不知道jQuery不是一种语言一样…@evolutionxbox jQuery非常适合在DOM上进行操作。如果他在应用程序中使用jQuery,为什么要使用更复杂的vanilla js解决方案呢?这只是一个示例,p标记的深层结构可能完全不同。。另外,您的代码将删除awhat about标记中的i?这只是一个示例,p标记的深层结构可能完全不同。。此外,您的代码将删除awhat about标记中的i?谢谢,但我正在寻找一种不更改HTML的解决方案。因为这将是一个很大的工作!谢谢,但是我正在寻找一个不改变HTML的解决方案。因为这将是一个很大的工作!你能在你的答案中加入小提琴而不是场外链接吗?你能在你的答案中加入小提琴而不是场外链接吗?p中的结构没有给出。这只是一个例子,所以你的解决方案不起作用。p中的结构没有给出。这只是一个示例,因此您的解决方案不起作用。
$('p').html($(this).html().replace('Login', 'Anmeldung'));