2009-04-08 58 views
0

我目前在JQuery的1.3.2JQuery的添加HTML和事件

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

要求該輸出數字列表如下,但點擊生成的元素時的警報返回總頁數值,而不是循環期間的i值。我如何獲得點擊事件來提醒我的價值?

感謝

+0

想一想。到click事件觸發時,for循環已經完成,並且我已經增加到totalPages。我不是你創建的新div的屬性,而是你的循環迭代器。你需要引用一個屬於div的變量。 – glomad 2009-04-08 16:06:18

回答

3

試試這個

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

此代碼應梳理你的問題出來了:

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

這是一個範圍相關的問題。你需要圍繞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(" "); 
})(); 
0

比如說,如果你沒有數的文本作爲鏈接的一部分,我喜歡編碼這樣的值到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>