12

为什么以下内容没有将文本更改为有效?

//JAVASCRIPT/JQUERY:

$('a').each(function(i) {
    if($(i).attr("href") == "mywebsite.co.uk")
    {
        $(i).innerHTML = "It Worked!";
    }
});


//HTML:

<a href="mywebsite.co.uk"></a>

调试它似乎没有得到href value.attr,但我可能弄错了,有人可以确保我正确完成了上述操作吗?

4

6 回答 6

14

i是元素的索引,你想要元素并且应该使用应该使用类似的东西:

// The first argument is the index, the second is the element
$('a').each(function(index, element) {
    if($(element).attr("href") == "mywebsite.co.uk")
    {
        $(element).html("It Worked!"); // Change this to .html()
    }
    console.log('Index is:'+index+', Element is'+element);
});​

<a href="mywebsite.co.uk"></a>

另外,我将其更改.innerHtml().html("content in here"). <a></a>更新返回标签内的 HTML (element)

检查这个JSFiddlehttp://jsfiddle.net/2scug/1/

于 2012-09-17T09:57:16.470 回答
7

写成这样可能会更短:

$('a[href="mywebsite.co.uk"]').each(function() {
    $(this).html("It Worked!");
});

jQuery 有 html() 函数也是有原因的。它清除所有可能的内存泄漏,然后在内部使用 innerHTML 来设置您需要的值;-)

于 2012-09-17T09:57:18.107 回答
6

更正:

//JAVASCRIPT/JQUERY:

$('a').each(function(i) {
    if($(this).attr("href") == "mywebsite.co.uk")
    {
        $(this).html("It Worked!");
    }
});

jsFiddle:http: //jsfiddle.net/kAWdy/

编辑 2019-12-06 我在写初始答案时急于尝试获得积分并且没有花时间创建最简洁的版本。不需要.each(...),JQuery 选择器用于获取一组元素,并且可以将操作应用于该集合。像这样:

$("a[href='mywebsite.co.uk'").html("It Worked!");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="othersite1.co.uk">Foo</a> <br />
<a href="mywebsite.co.uk">Foo</a> <br />
<a href="othersite1.co.uk">Foo</a> <br />

于 2012-09-17T09:57:22.727 回答
5

尝试一下:

$('a').each(function(i,v) {
    console.log();
    if($(v).attr("href") == "mywebsite.co.uk")
    {
        $(v).html('It worked!');
    }
});
于 2012-09-17T09:57:06.230 回答
1

在这里,我已经为上述问题完成了完整的垃圾箱。你可以在这里查看演示链接

演示 http://codebins.com/bin/4ldqp75/1/For%20each%20link%20where%20href%20equal

<a href="mywebsite.com">
</a>
<a href="mywebsite.co.uk">
</a>
<a href="mywebsite.us">
</a>
<a href="mywebsite.in">
</a>
<input type="button" id="btn1" value="Get Text"/>

jQuery:

$(function() {

    $("#btn1").click(function() {
        $("a").each(function() {
            if ($(this).attr('href').trim() == "mywebsite.co.uk") {
                $(this).html("UK Website Link");
            } else {
                $(this).html("Website Link");
            }

        });
    });

});

CSS

a{
  display:block;
}
input[type=button]{
  margin-top:10px;
}

演示 http://codebins.com/bin/4ldqp75/1/For%20each%20link%20where%20href%20equal

于 2012-09-17T10:27:48.357 回答
1

利用JS 中可用的数组函数

这是我能想到的最简单的解决方案

$('a')
.filter('a[href*="mywebsite.co.uk"]')
.text('It worked!');
于 2019-12-06T10:11:07.760 回答