如何重复排序div中的元素而不失去可点击性?

时间:2013-08-08 08:41:55

标签: javascript jquery html

我需要的例子:

http://jsfiddle.net/bbGMB/1/

var interval = 100;
$(function(){
    $('#container').children().click(function(e){
        alert($(e.target).text()+" clicked");
    });
    setInterval(function(){
        $('#container').children().sort(function(a,b){
            if($(a).text() > $(b).text()) return 1;
            if($(a).text() < $(b).text()) return -1;
            return 0;
        }).appendTo('#container');
    },interval);
})

如果我们将间隔更改为10000,一切正常。

但我需要大约100或更低的间隔。

2 个答案:

答案 0 :(得分:3)

修改你的小提琴进行比较。请检查http://jsfiddle.net/bbGMB/4/

var interval = 100;
$(function(){
    $('#container').children().click(function(e){
        alert($(e.target).text()+" clicked");
    });
    setInterval(function(){
        var origC = $('#container').children(); 
        var newC  = $.extend([], origC);

            newC.sort(function(a,b) {
            if($(a).text() > $(b).text()) return 1;
            if($(a).text() < $(b).text()) return -1;
            return 0;
        });
        for (var i=0; i < origC.length; i++) {
            if (origC[i] !== newC[i]) {
                newC.appendTo('#container');
                break;
            }
        }

    },interval);
})

答案 1 :(得分:0)

如果我正确理解了您的问题,则无需按特定间隔重复排序。只需在单击元素时调用sort-function。 (您当前对alert()的调用是)