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)

このJSFiddleを確認してください。http://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 に答える