3

同じことを書く方法がたくさんあるように見えるので、jQueryを学ぶのは難しいと思います。

演習として、アンカー タグ内のテキストを取り、リンクの href 属性に詰め込みたいと思います。

例えば

<a href="">http://www.something.com</a>

なる

<a href="http://www.something.com">http://www.something.com</a>  

私の最初の試みは

<script type="text/javascript">
$(document).ready(function() {
var text = $('a').text();

$('a').attr( 'href', text );
});
</script>

リンクごとにこのアクションを実行するように指定する必要があるため、これは明らかに機能しません。

foreach ループを使用する必要がありますか? .each() 関数? それとも$this表記?それらはすべて機能しますか?

4

1 に答える 1

7
$('a').text()

すべてのアンカーノードのテキスト値の組み合わせを返します..スタックオーバーフローで実行したところ、次のようになりました。

"mederlogoutaboutfaqQuestionsTagsUsersBadgesUnansweredAsk QuestionJquery $this または each() で一度に 1 つのリンクを指定するjqueryeachthiseditcloseflagchrisadd commentjqueryeachthisask your own questionjquerythiseachC++/Unix Programmer at Waterfront International Ltdjobs.stackoverflow.comquestion feedaboutfaqblogpodcastprivacy policyadvertise infocontact usfeedback always Welcomestackoverflow.comserverfault.comserverfault.comsuperuser.com. "

したがって、個々のアンカーのテキストへの参照を保存できるように、jQuery.prototype.each を使用する必要があります。

$('a').each(function() {
    var text = $(this).text();
    $(this).attr('href', text );
});

追加の利点は、各関数が独自の実行コンテキストで実行され、定義された各変数、宣言されたすべての「テキスト」がその関数本体に固有であるため、.each 内により多くの制御があることです

バニラ ループの取り引きについて - jQuery.prototype.each を使用します。これは高レベルの関数であるためです。変数を nodeList の長さに割り当て、0 で開始し、長さで停止する必要があります (または、順序がない場合逆のwhileループを実行しても問題ありません..これは、必要以上の作業を引き起こすだけです。

于 2009-10-06T18:44:28.700 に答える