문제

나는 현재 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(" ");
}

이것은 필요에 따라 숫자 목록을 출력하지만 생성 된 요소를 클릭 할 때의 경고는 루프 중 i의 값이 아니라 TotalPages 값을 반환합니다. 클릭 이벤트가 어떻게 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 Loop의 진술 주위에 폐쇄를 형성해야합니다. 이 같은:

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