如何更改元素的文本而不影响其子元素?

时间:2019-09-10 17:35:50

标签: javascript jquery api azure-ad-b2c

我有以下div,并且想要更改显示“没有账户?”的文字。到其他的东西。

我尝试过$('a#createAccount').text'some text).html('some text');$('.create p')相同,但会删除<a>

<div class="create">
  <p>
    Don't have an account?<a id="createAccount" tabindex="1" href="/b3c3aa0d-d4db-459d-8bf6-ed1538d45256/B2C_1_sign_up_sign_in_persona...">Sign up now</a>
  </p>
</div>

仅更改使<a>保持不变的文本

5 个答案:

答案 0 :(得分:2)

您可以选择锚标记,将其放入变量中,覆盖您的段落内容,然后将锚标记附加回去。

let anchor = $('a#createAccount');
let paragraph = $('.create p')
paragraph.text("New text ");
paragraph.append(anchor);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="create">
  <p>
    Don't have an account?<a id="createAccount" tabindex="1" href="/b3c3aa0d-d4db-459d-8bf6-ed1538d45256/B2C_1_sign_up_sign_in_persona...">Sign up now</a>
  </p>
</div>

答案 1 :(得分:1)

对于每个How do I select text nodes with jQuery?,您可以利用链接函数将匹配的元素过滤到父元素内的文本节点,然后将其data属性设置为所需的文本:

$(document).ready(function() {
  $(".create p").contents().filter(function() {
    return this.nodeType === 3; //Node.TEXT_NODE
  }).each(function() {
    if ($(this).text().trim() !== "") this.data = 'some text'; // ensure that stray blank text nodes aren't caught up in this change
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="create">
  <p>
    Don't have an account?<a id="createAccount" tabindex="1" href="/b3c3aa0d-d4db-459d-8bf6-ed1538d45256/B2C_1_sign_up_sign_in_persona...">Sign up now</a>
  </p>
</div>

答案 2 :(得分:0)

var link = $("#createAccount");
$(".create p").html("some text&nbsp;").append(link);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="create">
  <p>
    Don't have an account?<a id="createAccount" tabindex="1" href="/b3c3aa0d-d4db-459d-8bf6-ed1538d45256/B2C_1_sign_up_sign_in_persona...">Sign up now</a>
  </p>
</div>

答案 3 :(得分:-2)

尝试使用document.write并更新所需的内容

while condition:
    this statement is executed inside the while 
    this statement is executed inside the while
this statement is NOT executed inside the while

答案 4 :(得分:-2)

您是否必须使用jQuery来执行此操作?如果没有,您可以只使用普通的旧javascript,为什么不尝试document.getElementById('createAccount').innerHTML = 'some text';

因此,在理解了您的要求之后,我可以通过以下方法完成此任务:

<p id="MP"> Some text to replace <a href="#">My link</a> </p> 
<br><br> <input type="button" value="Change" onclick="Change()"/> 

<script type="text/javascript">

    function Change() { var Markup = document.getElementById('MP').innerHTML; var POS = Markup.indexOf('<a'); Markup = Markup.substring(POS); Markup = 'Some new text ' + Markup; document.getElementById('MP').innerHTML = Markup; }

</script>
相关问题