更改链接的内部文本

时间:2014-10-09 12:14:14

标签: jquery

我尝试过几件不同的事情:

我有动态菜单,填充父菜单和子菜单

我需要更改链接中的内部文本。

$("li:has('a'):contains('NAME1')").ReplaceWith('Name2');

$("li:has('a'):contains('NAME1')").text('Name2');

这些似乎都不起作用,因为他们删除了完整的链接。我不想更改链接,只需更改<a href="linl">name to change</a>

中的文字

<li>
    <a href="http://www.xxxx.com/Sweet-Wines/">

        Fortified & Sweet Wines

3 个答案:

答案 0 :(得分:0)

您的代码应该有效: 给出html:

<a href="somelink">Text</a>

和.js:

$('a').text('new text');
这是有效的。 check fiddle here

你可能选错了吗?发布更多HTML。

答案 1 :(得分:0)

假设你有

 <ul class="js-my-menu">
    <li><a href="somelink">Name1</a></li>
 </ul>

然后你可以使用

$('.js-my-menu').find('a:contains("Name1")').text('new text');

JSFiddle链接:http://jsfiddle.net/6w8zpz3r/2/

注意,类名中的js-前缀是一种最佳实践方法,用于突出显示仅用作附加JavaScript行为的挂钩的类,而不应用于样式化目的。这提高了可维护性。

答案 2 :(得分:0)

我们假设你有来自your comment的HTML:

$("li:has('a'):contains('NAME1')").text('Name2');几乎是正确的,但您选择了错误的元素(li,而不是a)。

您可以这样做:

$("li:contains('NAME 1') a").text('Name 2');

演示:

&#13;
&#13;
$("li:contains('Name 1') a").text('Changed text')
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li><a href="">Name 1</a></li>
  <li><a href="">Name 2</a></li>
</ul>
&#13;
&#13;
&#13;