重新安排div后,JQuery事件不再响应

时间:2011-03-06 02:55:43

标签: javascript jquery function click

我有这个功能:

$(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);

2 个答案:

答案 0 :(得分:2)

我认为你可能有两个问题

1)您的代码可能是动态生成的,在这种情况下使用实时绑定,您可以在这里引用相同的

http://api.jquery.com/live/

2)检查班级名称是否有变化,jquery不会有任何问题。

答案 1 :(得分:0)

如果要重新创建表单元素,请使用.live:

$(function() {
    $('.upvote').live('click', function() { voteActions(upvoteID, this.id); } );
    $('.downvote').live('click', function() { voteActions(downvoteID, this.id); } );
});