2009-04-08 13 views
0

ich zur Zeit die folgenden in JQuery 1.3.2JQuery HTML und Event-

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

Dies gibt eine Liste von Zahlen haben, wie erforderlich, aber der Alarm, wenn das erzeugte Element klicken, um den Wert zurückgibt Totalpages, nicht die Wert von i während der Schleife. Wie bekomme ich das Click-Ereignis, um stattdessen den Wert von i zu alarmieren?

Dank

+0

darüber nachdenken. Wenn das Click-Ereignis ausgelöst wird, ist die for-Schleife abgeschlossen und ich wurde bereits auf totalPages erhöht. Ich bin keine Eigenschaft des neuen Divs, das Sie erstellt haben, es ist Ihr Loop-Iterator. Sie müssen auf eine Variable verweisen, die zum div gehört. – glomad

Antwort

3

Try this

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

Dieser Code sollte Ihr Problem aussortieren:

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

Dies ist ein Umfang verwandtes Problem ist. Sie müssen einen Abschluss um die Anweisungen in der for-Schleife bilden, indem Sie einen sogenannten "scope guard" verwenden. Etwas wie folgt aus:

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(" "); 
})(); 
0

Wenn, sagen wir, Sie haben nicht den Text der Nummer als Teil der Verbindung, wie ich Werte wie diese in die ID codieren, die Sie diese geben würde:

<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>