我的想法如果我想通过将锚点与特定的现有href匹配来更改锚标记href,我写下了正在运行的代码:
<a href="Accept.php">Accept</a>
<script src="http://code.jquery.com/jquery-3.2.1.js"></script>
<script>
$("a[href='Accept.php']").attr('href', 'http://www.accept.com');
</script>
但是现在我正在使用jQuery使用锚标记值来改变超链接。
我为此编写了以下代码,但它并不适用于我。
$("a[text='Accept']").attr('href', 'http://www.accept.com');
答案 0 :(得分:1)
$("a").filter(function(){
return $(this).text() == 'Accept';
}).attr('href', 'http://www.accept.com');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="Accept.php">Accept</a>
&#13;
attr()
设置attr值答案 1 :(得分:0)
请检查一下。它正在发挥作用。
$(document).ready(function(){
$("a:contains('Accept')").attr('href', 'http://www.accept.com');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<a href="Accept.php">Accept</a>
答案 2 :(得分:0)
如果您的a
元素没有text
属性(并且它们不应该是HTML,它是无效的HTML),a[text='...']
不是&#39开始工作。
如果您尝试将href
设置为内容,则可以使用:contains
,但请注意它与元素中的任何位置匹配:
$("a:contains('Accept')").attr("href", function() {
return $(this).text();
});
请注意,它使用attr
accepting a callback的版本,因此它使用每个a
的特定文本作为属性。
您的内容需要是有效的相对或绝对网址,例如<a>Accept.php</a>
。或类似的。
答案 3 :(得分:0)
您可以使用包含选择器来获取链接对象。参考https://api.jquery.com/contains-selector/
$("a:contains('Accept')).attr('href', 'http://www.accept.com');
答案 4 :(得分:-1)
据我所知,jQuery不允许按内部文本的内容选择元素。您需要过滤结果或完全使用不同的方法。
首先,让我们看看过滤选项。您需要选择所有锚标记,然后使用filter()
函数按其内容过滤它们:
$("a")
.filter(function(idx, el) {
return $(el).text() === "Accept";
})
.attr("href", "http://www.accept.com");
然而,这显然是一个相当慢的选择,在非常大的页面上,它可能会导致可感知的滞后。在将其推向生产之前,请确保它不会给您带来麻烦。
另一种方法,也就是推荐的方法,是使用类或id。如您所知,jQuery以及vanilla JS能够按其id或类选择元素。我建议你试着弄清楚你是否可以将id / class应用到你的链接并选择它。使用过滤方法作为最后的解决方案。
答案 5 :(得分:-2)
以下是您的demo示例代码:
HTML:
<a href="Accept.php">Accept</a>
JQuery的:
if($("a").text() == 'Accept') {
$("a").attr('href', 'http://www.accept.com');
}