如何在jQuery中实现闭包


How to implement a closure in jQuery

我对jQuery了解不多。在这里,我试图实现一个闭包,将一个点击事件附加到每个锚标记上,这样每个锚标记一旦被点击就会提醒某个数字。但我得到了以下错误:

SyntaxError: missing ) after argument list

};})(i);

有人能帮我解决这个问题吗?谢谢:)

代码:

<div id='pageBox'>
    <ul id='pageContainer'>
        <?php for($i=1;$i<=$pagenum;$i++){?>
           <li><a href=''><?php echo $i;?></a></li>
        <?php }?>
    </ul>
 </div>
<script>
for(i=1;i<=<?php echo $pagenum;?>;i++){
      $('#pageContainer li a').click((function(i){return function(event){
               event.preventDefault();
               alert(i);
            };})(i);
      );
}  

这里不需要闭包。这可以使用简单的方法来实现。在带有前缀的自定义属性data-*中持久化php变量$i,该属性可以使用.data() 获取

将HTML更改为

<ul id='pageContainer'>
    <?php for($i=1;$i<=$pagenum;$i++){?>
       <li><a href='' data-id='<?php echo $i;?>'><?php echo $i;?></a></li>
    <?php }?>
</ul>

编写脚本

  $('#pageContainer li a').click(function(){
    alert($(this).data('id'));
  });