2

特定の div 内のすべてのアンカー タグにCSS クラスを追加するクリック機能を追加しようとしています。どういうわけか、jQueryでこれを行うことができません(JSエラーもありません)。

div:

<div id="better">
    <a href="1.aspx">One</a>
    <a href="2.aspx">Two</a>
    <a href="3.aspx">Three</a>
</div>

私のjQueryコード($(document).ready内):

 $("#better > a").click(function() { $(this).addClass('active'); });

クリック関数にアラートを追加して、アラートが発生するかどうかを確認しましたが、何も起こりません。上にも書きましたが、FFのエラーコンソールにもJavaScriptエラーが出ません。

ヘルプ?

編集:これは単なるサンプルコードです。はい、リダイレクト時にクラスを変更しても意味がありません。私は自分のコードを、私がやろうとしていることの核心まで単純化しました。:)

4

5 に答える 5

3
$("#better a").bind('click', function() { $(this).addClass('active'); });
于 2009-09-22T18:38:23.417 に答える
1

私があなたが何を求めているのか理解しているなら..あなたはこれで終わりたいですか?

<div id="better">
    <a href="1.aspx" class="active">One</a>
    <a href="2.aspx" class="active">Two</a>
    <a href="3.aspx" class="active">Three</a>
</div>

そのdiv内のリンクがクリックされた場合は、そうですか?(あなたはすべてのアンカータグを言いました)...そしてこれを使用してください:

$("#better").click(function() {
 $(this).find('a').addClass('active');
 return false;
});
于 2009-09-22T18:44:01.290 に答える
0

アラートは私にとってはうまくいきます。しかし、新しいページにリダイレクトする場合、なぜクラスを追加するのでしょうか?

于 2009-09-22T18:38:17.183 に答える
0

2 つの推測:

  1. あなたのページに別の要素がありますid="better"か?ID はグローバルに一意であると想定されているため、セレクターはそのうちの 1 つだけを返します。

  2. クリック関数が false を返すようにして、ユーザーがリンクをたどらないようにしてください。(リンクが新しいウィンドウで開かない限り、ユーザーがページを離れるときにクラスを追加するのは奇妙に思えます。)

于 2009-09-22T18:41:36.653 に答える
0

ページの下部にある body 終了タグの直前、または $(document).ready() 関数でコードを実行してみてください。

Firebug を使用すると、console.log() を使用して JavaScript コンソールに出力し、セレクターが実際に要素を返すことを確認できます。例: console.log($("#better > a").length)

于 2009-09-22T18:42:13.603 に答える