使用其值jQuery更改超链接的href

时间:2017-05-09 08:44:28

标签: javascript jquery

我的想法如果我想通过将锚点与特定的现有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');

6 个答案:

答案 0 :(得分:1)

&#13;
&#13;
$("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;
&#13;
&#13;

  1. 使用过滤器并返回要选择的锚点。
  2. 然后使用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");

Same example on jsfiddle

然而,这显然是一个相当慢的选择,在非常大的页面上,它可能会导致可感知的滞后。在将其推向生产之前,请确保它不会给您带来麻烦。

另一种方法,也就是推荐的方法,是使用类或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');
}