Javascript 如何在jQuery中实现闭包
我对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
对于(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'));
});