使用此代码,我正在尝试将click事件动态绑定到元素并引用递增的变量:
<script type="text/javascript" src="/js/jquery-1.5.1.min.js"></script>
<script language="javascript">
$(document).ready(function() {
function preprocessPage(id){
$('.nextPage').click(function(){
showPage(++id);
});
}
function showPage(id){
console.log('showing: '+id);
preprocessPage(id);
}
showPage(1);//init
});
<div class="nextPage">show next page</div>
当页面加载时,它似乎按预期工作。第一次点击似乎有效。事情变得棘手了。它似乎多次运行代码(增加2倍)如果你单击div 4次(在初始加载后出现第一个日志行),这就是你在firebug控制台中看到的内容:
显示:1
显示:2
显示:3
显示:3
显示:4
显示:4
显示:4
显示:4
显示:5
显示:5
显示:5
显示:5
显示:5
显示:5
显示:5
显示:5
请帮忙!这是怎么回事?提前谢谢....
答案 0 :(得分:3)
每次点击调用show page,为与选择器.nextPage
匹配的元素添加新的onclick处理程序。
有时,在头脑或纸上执行代码以了解正在发生的事情是很好的。我已经强调了事情失控的事件。
showPage(1)
showing page 1
preprocessPage(1)
.nextPage
.nextPage
id
从1增加到2 showPage(2)
showing page 2
preprocessPage(2)
。.nextPage
.nextPage
id
从2增加到3 showPage(3)
showing page 3
preprocessPage(3)
.nextPage
id
从2增加到3 showPage(3)
showing page 3
preprocessPage(3)
.nextPage
以下内容应该更接近您所寻找的内容
$(document).ready(function() {
function showPage(id){
console.log('showing: ' + id);
}
// Start with page 1
var id = 1;
// Show the first page
showPage(id);
// Add onclick handler to each element with class="nextPage"
$('.nextPage').click(function(){
// Increment the page id and then call showPage with the current id
showPage(++id);
});
});