2009-04-08 69 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>