您不需要循环遍历绑定处理程序的每个链接,您可以这样做:
// bind click handler to all tags inside #rate_box $('#rate_box a').click(function() { });
取消绑定同样如此:
$('#rate_box a').unbind('click');
至于你的代码,它可能没有执行,因为当你解开元素标签时你还没有关闭内部,所以它是无效的javascript:
$('#rate_box a').each(function(i) { $(this).unbind('click'); } // <- missing closing ");"
你应该使用像Firebug或Firebug Lite这样的工具来调试你的javascript,虽然上面的内容应该只是在大多数浏览器中给你一个Javascript错误.
编辑如果要在单击时查找当前链接的索引,请执行以下操作:
var links = $('#rate_box a'); $(links).click(function() { // this is to stop successive clicks on ratings, // although the server should still validate to make // sure only one rating is sent per game if($(this).hasClass('inactive_for_click')) return false; $(links).addClass('inactive_for_click'); // get the index of the link relative to the rest, add 1 var index = $(links).index(this) + 1; $.post("../includes/process/rating.php", { id: "", type: "game", rating: index }, function(data) { $('#status').html(data).fadeIn("normal"); // unbind links to disable further voting $(links).unbind('click'); }); });