更改<p>中的内容文字,但保留<a> tag in same position of content

时间:2016-04-28 13:17:59

标签: javascript jquery

6 个答案:

答案 0 :(得分:1)

您可以使用nodeType执行此类操作。然后,您可以使用textContent属性更改值。

  

对于文本节点,nodeType属性将返回3.

//set new value
elements = $('.par').contents().filter(function() {
  return this.nodeType == 3;
});
elements[0].textContent = 'New text ';
elements[1].textContent = 'New text 1 ';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<p class='par'>some text goes here <a class='link' href='#somelink'>Link</a> Text continues here</p>

答案 1 :(得分:1)

您也可以这样做

&#13;
&#13;
$('p').contents().map(function() {
  if (this.nodeType == 3) this.textContent = 'New Text';
  if (this.nodeType == 1 && this.nodeName == 'A') this.textContent = 'New Link Text';
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class='par'>some text goes here <a class='link' href='#somelink'>Link</a> Text continues here</p>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以尝试以下脚本:

&#13;
&#13;
$(document).ready(function () {
        var hrefTag = $('a').attr('href');
        var ClassTag = $('a').attr('class');
        $('p').html('<a class="' + ClassTag + '" href="' + hrefTag + '">Link</a>');
    });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class='par'>some text goes here <a class='link' href='#somelink'>Link</a> Text continues here</p>
&#13;
&#13;
&#13;

希望它对你有所帮助。

答案 3 :(得分:0)

这是你想要的吗?

var p =document.getElementsByTagName('p')[0]
var a =p.getElementsByTagName('a')[0];
p.innerHTML='';
p.appendChild(a);

答案 4 :(得分:0)

希望此代码段有用

var cache = $('.par a'); //  will select a inside .par
var _lastText = " this is last part"; 
$('.par').empty(); // Will empty p tag
$('.par').text('new text ');
$('.par').append(cache);
$('.link').text('new link text'); 
$('.par').append(_lastText)

Working JSFIddle

答案 5 :(得分:0)

您可以拆分<a>代码并更改“p”内和“a”外的文字位置

$(".par").html($(".par").html().replace($(".par").html().split('<a')[0], 'new first part text'));
$(".par").html($(".par").html().replace($(".par").html().split('/a>')[( $(".par").html().split('/a>').length - 1)], 'new continue text'));