我尝试过几件不同的事情:
我有动态菜单,填充父菜单和子菜单
我需要更改链接中的内部文本。
$("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
答案 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');
$("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;