Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中实现闭包_Javascript_Php_Jquery_Closures - Fatal编程技术网

Javascript 如何在jQuery中实现闭包

Javascript 如何在jQuery中实现闭包,javascript,php,jquery,closures,Javascript,Php,Jquery,Closures,我对jQuery了解不多。在这里,我试图实现一个闭包,将一个点击事件附加到每个锚标记上,这样,一旦点击,每个锚标记都会发出一定数量的警报。但我得到了以下错误: 有人能帮我解决这个问题吗?谢谢:) 代码: 对于(i=1;i这里不需要闭包。这可以通过简单的方法实现。将php变量$i保存在data-*前缀的自定义属性中,可以使用.data() 将HTML更改为 <ul id='pageContainer'> <?php for($i=1;$i<=$pagenum

我对jQuery了解不多。在这里,我试图实现一个闭包,将一个点击事件附加到每个锚标记上,这样,一旦点击,每个锚标记都会发出一定数量的警报。但我得到了以下错误:

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

代码:



对于(i=1;i这里不需要闭包。这可以通过简单的方法实现。将php变量
$i
保存在
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>

最后的
应为
})
点击
你确定吗。。?最后)用于click event。使用您正在使用的循环,您将为相同的元素创建重复的事件侦听器@Satpal有最好的解决方案,值得研究,因为您正在学习javascript,并且在将值从php传递到javascript时会一致地使用它。实际上,语法错误的真正原因是有一个额外的
};}的末尾(i) )。那
(函数(i){…
不是一个独立的语句,而是
.click()
的一个参数,因此不应该以分号结尾。我考虑过这一点。但随着我的学习,我更愿意坚持我的方法:)@阿尔·扎米,由你决定哪种方法适合你。我仍然对你的方法有些怀疑。
<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);
      );

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