1

追加して作成した一連のdiv要素にクリックイベントを追加しようとしていますが、問題が発生しています。

IDがa0--->anのdiv要素がたくさんあります。クリックイベントを割り当てるためにdivが作成された後、forループを作成しようとしています。問題は、クリックイベントが発生したときの方法です。どのdivがイベントを発生させたかを追跡する方法がありません。以下のコードはそれをより明確にするかもしれません。したがって、私が抱えている問題は、#a + iが常に最後のdivを返し、クリックされたdiv番号を返すようにしたいということです。

$(document).ready(function () {
            traverse(oo);
            for (i = 0; i <= groupNum; i += 1) {
                $("#a" + i).click(function () {
                    console.log("#a" + i + "clicked");
                });
            }
        });

クローザーを返却することを考えましたが、それではさらに複雑になると思います。誰かがこれを最善にする方法について何かアドバイスがありますか?

前もって感謝します。

4

4 に答える 4

6

何をしようとしているのかわかりませんが、クリックイベントを一連の要素に割り当てたい場合は、正しいセレクターを使用してください($(this)クリックされた要素を取得するためのの使用に注意してください)。

$("div").click(function(){
   var clickedDiv = $(this);
   var id = clickedDiv.attr("id");
});

すべての要素が必要ない場合はdiv、それらにクラスを追加して、別のセレクターを使用できます。

$(".MyDivClass").click(function(){...

またはクラスがない場合、'は'で始まります(以下では、属性が "a"で始まるidすべてのdiv要素を取得します):id

$("div[id^='a']").click(function(){...

他のJavaScriptでdivを動的に追加していて、クリックイベントを自動的に発生させたい場合は、on関数...を使用します。

$(document).on("click", ".MyDivClass", function(){...
于 2013-03-15T17:37:27.143 に答える
2

iお気づきのとおり、変数には最後の反復で設定された値が含まれます。変化する

console.log("#a" + i + "clicked");

console.log(this.id + " clicked");

イベントハンドラー内には、イベントthisのターゲットDOM要素があります。

于 2013-03-15T17:36:50.120 に答える
0

クリックイベントを特定のIDではなくクラスに割り当て、クリック関数内で条件ステートメントを使用して、IDに基づいてさまざまなことを行うことができます。

    $(documnet).ready(function(){
        $('.clickclass').click(function(){
                  /* conditional code here */
        });
    });
于 2013-03-15T17:51:40.380 に答える
0

あなたはこのようにそれを行うことができます:

$('[id^="a"]').click(function () {
  console.log(this.id+" clicked");
});
于 2013-03-15T17:40:31.070 に答える