javascript - jQuery 附加问题而不删除原始元素

标签 javascript jquery

我刚刚写了一些代码来练习我的 jQuery。当我编写这段代码时,我发现它只使用 append() 并且不删除 table 中的任何原始 tr 元素就可以正常工作。它是如何工作的——有人可以向我解释一下吗? here is the complete code .谢谢!

这是我的 jQuery 代码:

$(document).ready(function () {    
     var list = a();
     var last = $('#table').find("tr").length;     
    $('#table').find("tr").each(function (index, element) {
            $(this).prepend($("<button/>").text("↑").bind('click', function () {
                up($(this).parent(), last);
            }));
            $(this).prepend($("<button/>").text("↓").bind('click', function () {
                down($(this).parent(), last);
            }));
        });
        $('#table').before($('<button />').text("reset").on('click', function () {
            reset(list);
        }));
      });
function up(tr, last) {
    if (0 != tr.index()) {
        var prevTr = tr.prev();
        tr.after(prevTr);
    }
}
function down(tr, last) {
    if (last - 1 != tr.index()) {
        var nextTr = tr.next();
        tr.before(nextTr);
    }
}
var reset = function (list) {
    for (var i = 0; i < list.length; i++) {
        $("#table").append(list[i]);
    }
};
var a = function () {
    var list = [];
    $('#table tr').each(function () {
        list.push($(this));
    });
    return list;
};

最佳答案

请注意,附加已经存在的元素只是移动它。我想也许您想克隆它:

jsFiddle

var reset = function (list) {
    for (var i = 0; i < list.length; i++) {
        $("#table").append(list[i].clone(true));
    }
};

但是,reset 函数的名字是错误的...

关于javascript - jQuery 附加问题而不删除原始元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21017209/

相关文章:

javascript - 根据 Javascript 中检测到的屏幕分辨率重定向到 PHP 中的响应式网站

javascript - React/Redux 项目未评估括号内的 ES6

javascript - Node.Js 使用 .filter 方法从数组中删除一项

javascript - 为什么 console.log 在这种情况下不起作用

javascript - 标记簇传单 : dynamically modify icon

javascript - AngularJS 从单个字段中的字符串中过滤多个单词

javascript - 有没有一种可靠的方法可以使用 javascript/jQuery 在所有设备上检测滚动?

JQuery Mobile 通过 AJAX 更新表和列切换停止工作

javascript - 检测子元素动画

jquery - 在datalist中找到div并提交按钮