1

次のシナリオがあります。私のjsには、クリックされたリンクIDを取得する必要がある動的ハイパーリンクがあります。

for (var i = 0; i < neighbor.data[3].length; i++){
    <a class="Chris" name="a" id="+i+" href="Chris">Hi</a>
}

これでこれを取得できます。

    parseInt($(this).attr("ID"));

これを使用してキャプチャしています。

$(document).on("click", "a.a", function(event) {
    event.stopPropagation();
    alert(clickedID);
    clickedID = parseInt($(this).attr("ID"));
});

ここで、私の問題は、1 つの clickedID だけではなく、ハイパーリンクをクリックするたびに、クリックされたハイパーリンクごとに 1 つあるということです。これを防ぐ方法はありますか?

4

3 に答える 3

2

アンカータグではなくドキュメントにイベントを設定しているため、すべてのアンカータグを取得していると思います。代わりにこれを試してください:

$('a').on('click',function(event) {
  event.stopPropagation();
  clickedID = parseInt($(this).attr('id'));
  alert(clickedID);
});
于 2012-09-22T00:19:43.123 に答える
1

for ループにエラーがあります。プラス記号と変数 i をエスケープしていないため、id="+i+"すべてのアンカー タグの ID を に設定するだけです。+i+

于 2012-09-22T00:21:50.113 に答える
0

これを試すことができます。これは、使用したクラス名ではなく、数字以外の文字で始まる"a.a"必要があるためです。"a.Chris"Chrisaid

for (var i = 0; i < neighbor.data[3].length; i++){
    var a='<a class="Chris" name="a" id="id_'+i+'" href="Chris">Hi</a>';
    $('#links').append(a);
}

$("#links").on("click", "a.Chris", function(event) { // You can use $(document).on(...) instead of $("#links").on(...)
    event.preventDefault();
    event.stopPropagation();
    clickedID = parseInt($(this).attr("id").split('_')[1]);
    alert(clickedID);
});

デモ

于 2012-09-22T00:30:56.923 に答える