如何在jQuery中实现闭包

时间:2015-12-30 08:14:27

标签: javascript php jquery closures

我对jQuery了解不多。在这里,我尝试实现一个闭包,将click事件附加到每个锚标记,以便每个锚点标记一次就会提醒某个数字。但我收到以下错误:

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

}  

1 个答案:

答案 0 :(得分:2)

你不需要在这里关闭。这可以使用简单的方法来实现。在$i前缀自定义属性中保留php变量data-*,可以使用.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'));
  });