我有这个功能:
$(function() {
$('.upvote').click(function() { voteActions(upvoteID, this.id); } );
$('.downvote').click(function() { voteActions(downvoteID, this.id); } );
});
如果我单击upvote按钮,此事件会响应并正常工作并始终如此。没有问题。但是,我有另一个按钮,按添加的日期对提交内容进行排序。这将重新安排所有div提交,并在重新安排后,他们各自的upvote和downvote图标不再有效。如果我在click函数代码中添加一个警报,那么它只会在div被排序之前触发。由于某种原因排序的提交会使点击功能发生变化。在对它们进行排序后,不再调用它。奇怪的是,整理工作完美无瑕。此外,我之前和之后检查过firebug,除了顺序不同外,一切都完全一样。 ids,名称和类都是相同的,但它们的JQuery函数不再响应。
我有一种感觉,这与在重新安排提交后没有重新处理的JQuery文件有关,但我不知道该怎么办。我还是Javascript和JQuery的新手。有什么想法吗?
编辑:这是重新安排的功能:
(function($) {
$.fn.reOrder = function(array) {
return this.each(function() {
for (var i = 0; i < array.length; i++)
array[i][0] = $('div#' + array[i][0]);
$(this).empty();
for (var i = 0; i < array.length; i++)
$(this).append(array[i][0]);
});
}
})(jQuery);
答案 0 :(得分:2)
我认为你可能有两个问题
1)您的代码可能是动态生成的,在这种情况下使用实时绑定,您可以在这里引用相同的
2)检查班级名称是否有变化,jquery不会有任何问题。
答案 1 :(得分:0)
如果要重新创建表单元素,请使用.live:
$(function() {
$('.upvote').live('click', function() { voteActions(upvoteID, this.id); } );
$('.downvote').live('click', function() { voteActions(downvoteID, this.id); } );
});