Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用其值jQuery更改超链接的href_Javascript_Jquery - Fatal编程技术网

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

Javascript 使用其值jQuery更改超链接的href,javascript,jquery,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'); </s

当我想到是否要通过将锚与特定的现有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>

请检查这个。它正在工作

$(文档).ready(函数(){
$(“a:contains('Accept'))。attr('href','http://www.accept.com');
});

$(“a”).filter(函数(){
return$(this.text()='Accept';
}).attr('href','http://www.accept.com');


如果您的
a
元素没有
text
属性(它们不应该有,这是无效的HTML),
a[text='…']
将无法工作

如果您试图将其
href
设置为其内容,则可以使用,但请注意,它与元素中的任何位置都匹配:

$("a:contains('Accept')").attr("href", function() {
    return $(this).text();
});
请注意,这使用了
attr
的版本,因此它使用每个
a
的特定文本作为属性

您的内容需要是有效的相对或绝对URL,例如
Accept.php
。或类似情况。

以下是示例代码:

HTML:


可以使用包含选择器获取链接对象。提及


据我所知,jQuery不允许根据元素内部文本的内容选择元素。您需要过滤结果或使用不同的方法

首先,让我们看看过滤选项。您需要选择所有锚定标记,然后使用
filter()
函数按其内容对其进行过滤:

$("a")
    .filter(function(idx, el) {
        return $(el).text() === "Accept";
    })
    .attr("href", "http://www.accept.com");

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


另一种方法,也是推荐的方法,是使用一个类或id。正如您所知,jQuery和vanilla JS都能够通过它们的id或类来选择元素。我建议您尝试找出是否可以将id/类应用于链接,并选择该id/类。使用过滤方法作为最后的解决方案。

锚定标记上没有文本属性。因此,如果
a
元素没有
text
属性(它们不应该有,这是无效的HTML),则不能执行
$([text='Accept'])
a[text='…]
不起作用。了解所需版本的HTML外观会有很大帮助。将新文本设置为锚定并放置属性值与选择具有特定属性的锚定不同text@guradio是的,你是对的。但是他想用这个值来改变锚定标签,这就是为什么我更喜欢用一种简单的方式来做这件事。兄弟,请做一些小的改变。它正在改变所有锚定标签以接受和使用相同的href。我只想改变有值的href,不接受任何其他内容。如果有多个
a
元素,那么,在这种情况下,我们可以更改代码。为每个标记分配class和custom属性,并在此基础上调整JQuery代码。目前的解决方案是根据问题中提到的代码给出的。兄弟,非常感谢。在所有答案中。您的ans非常完美。@DoeChalie很高兴帮助mate happy编写代码。您还可以告诉我如何用php实现它吗?假设我有一个包含一些html页面代码的变量,我想从中筛选。
<a href="Accept.php">Accept</a>
if($("a").text() == 'Accept') {
    $("a").attr('href', 'http://www.accept.com');
}
$("a:contains('Accept')).attr('href', 'http://www.accept.com');
$("a")
    .filter(function(idx, el) {
        return $(el).text() === "Accept";
    })
    .attr("href", "http://www.accept.com");