1

ページ上のほとんどのリンクにクリック イベントを追加する必要があります。$('a')問題は、コンテナのクラスを 1 つまたはクリック ハンドラ呼び出しの引数として使用する必要があるため、単に ではなく、リンクのコンテナを選択してそれを行う必要があることです。

.each を使用して反復処理し、ハンドラーをバインドできる 1 つの大きなコレクションが必要です。少なくとも数十の異なるコンテナーが存在する予定なので、非常に長い文字列$(class1).add(class2).add(class3)などを使用せずにこれを行う方法はありますか?

ページには多数のブロックとセクションがあります。ユーザーが論理ブロック/セクションとして定義したリンクをクリックすると、コードが渡される必要があります。場合によっては、コードはタグのリンクされたリストを含むコンテナーである可能性があるため、すべてのタグは [great[grand]] 親と同じコードを持ちます。コンテナーがリンクではなくコードを運ぶ必要がある理由は、それが動的なサイトであり、そのブロック/領域のコンテンツがエディターによっていつでも変更される可能性があるためです。したがって、それは画面上のそのブロックの場所です。それはコードを決定し、その内容ではありません。そのため、ページが読み込まれると、コンテナー (セクション/ブロック) が認識され、そのコードがどうあるべきかがわかります。彼らは (私のように) その内容を認識しておらず、リンクはそのコンテナーを認識していません。

[返信を削除しようとしたときに誤って削除したコメントを追加した人にお詫びします]

<div class="code1">
  <div>
    <h2>title</h2>
  </div>
  <div>
    <ul>
       <li><a>link1</a></li>
       <li><a>link2</a></li>
    </ul>
  </div>
</div>
<div class="code2">
  <div>
    <img>
    <p></p>
    <a>text</a>
  </div>
  <div>
    <a><img></a>
  </div>
</div>

したがって、この場合、2 つのセクションの構造には、リンクが含まれていること以外に共通点がないことがわかります。クラスを持つコンテナーの周りの html の作成を制御します。これらのコンテナのコンテンツは完全に動的であり、実際、最初のコンテナのコンテンツは簡単に 2 番目のコンテナのコンテンツになる可能性があります。唯一の不変のものは div とそのコードです。

そのクラスの下にあるすべてのリンクを選択し、クリック ハンドラーを追加するときにクラスをそれらのリンクに追加するのが 1 つの方法だと思います。

4

4 に答える 4

1

複数のセレクターをコンマで区切ることができます。

$('.class1, .class2, .class3').each(function() { ... });

class1がコンテナの場合、もちろん次のaようにタグにアクセスできます。

$('.class1 a, .class2 a, ...')
于 2012-10-01T12:44:47.113 に答える
0

個々のイベントをバインドしたり、アンカーに特別な親を認識させたりしないと、必要なクラスを取得するのが難しい場合があります。ただし、イベント ターゲットを使用して、何がクリックされたかを伝えることができます。

$(".class1, .class2, .class3").click(function (e) {
   if (e.target.nodeName !== 'A') { return; }
   var cl = $(this).attr('class');
   //do whatever you want with $(e.target);
});

実際の例: http://jsfiddle.net/k2VuG/

于 2012-10-01T12:50:15.510 に答える
0

または

$('.container1, .container2, .container3').find('a').on('click',function(){
   //link click handler
});
于 2012-10-01T12:46:08.500 に答える
0

すべての要件を知らなくても、すべての A タグを選択する (または、onlick を取得することになっているすべての A タグにクラスを設定し、それによって選択する) 方が簡単だと思います。次に、たとえば、クリック イベントで親クラスを取得します。 . .$(this).parent().attrib("クラス").

いくつかのhtmlとjavascriptを教えてください。より視覚的な例を示します:)

于 2012-10-01T12:46:48.670 に答える