質問

私は現在、jQueryの1.3.2で、次のしている。

for (i = 0; i < totalPages; i++) {
   var newDiv = $("<a href=\"#\">").append(i+1).click(function() 
   { 
      alert(i+1);
   });
   $('#pageLinks').append(newDiv).append(" ");
}

このは、必要に応じて番号のリストを出力しますが、生成された要素がtotalPages値ではなく、ループ時のiの値を返してクリックし、アラート。どのように私が代わりにiの値を警告するクリックイベントを取得するのですか?

おかげ

役に立ちましたか?

解決

これを試してみてください。

for (i = 0; i < totalPages; i++) {
   var newDiv = $("<a href=\"#\">").append(i+1).click(function() 
   { 
      alert(this.text);
   });
   $('#pageLinks').append(newDiv).append(" ");
}

他のヒント

このコードは、あなたの問題を整理する必要があります:

for (i = 0; i < totalPages; i++) {
    var newDiv = $("<a href=\"#\">")
        .append(i+1)
        .click(
            function() { 
                alert($(this).html());
            }
         );
    $('#pageLinks').append(newDiv).append(" ");
}
、たとえば、あなたがリンクの一部として多数のテキストを持っていなかった場合は、

、私はあなたにこれを与えることになる、IDには、このような値をエンコードしたい:

<body>
<div id="pageLinks"><!-- --></div>

<script>
var totalPages = 10, newDiv;
for (i = 0; i < totalPages; i++) {
  var link = "<a href=\"#\" id=\"link-"+(i+1)+"\">"+(i+1)+"</a>";
  newDiv = $(link).click(function() {
    alert($(this).attr('id').split('-')[1]);
  });
  $('#pageLinks').append(newDiv).append(' ');
}
</script>
</body>

このスコープに関連する問題があります。あなたは、私がスコープガードを呼ぶものを使用してforループの中の文、周りの閉鎖を形成する必要があります。このような何かます:

var totalPages = 10;
for (i = 0; i < totalPages; i++) {
    (function() {
        var no = i + 1;
        var newDiv = $("<a href=\"#\">").append(i+1).click(function() {
        alert(no);
    });
    $('#pageLinks').append(newDiv).append(" ");
})();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top