Javascript 如何删除()一个HTML元素,然后在它前面加上()前缀?
基本上,我需要做的是“移动”一个HTML元素,而不是按位置移动,而是移动它的DOM结构的位置 乙二醇Javascript 如何删除()一个HTML元素,然后在它前面加上()前缀?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,基本上,我需要做的是“移动”一个HTML元素,而不是按位置移动,而是移动它的DOM结构的位置 乙二醇 如何将“tr#row3”移动到“table#main”的顶部? 可以使用jQuery var row3 = $("tr#row3") $("#main").prepend(row3); row3.remove(); 这可能是最简单的方法 var row = table.find("#row3"); var parent = row.parent(); // because parent m
如何将“tr#row3”移动到“table#main”的顶部?
可以使用jQuery
var row3 = $("tr#row3")
$("#main").prepend(row3);
row3.remove();
这可能是最简单的方法
var row = table.find("#row3");
var parent = row.parent(); // because parent may not be #main
parent.prepend(row.detach());
通常,如果您希望在保留元素的所有数据的同时增加元素的数量,那么应该使用jQuery.detach()
方法[]。从当前位置拆离图元后,可以将其插入新的图元中
但是,在这种情况下,.prepend()
和.append()
在默认情况下实际上会执行您想要的操作,因此不需要.detach()
。从文档中:
如果以这种方式选择的单个元素被插入其他位置,则该元素将被移动到目标中(而不是克隆):
另一种方式:
$('#main tbody').prepend(function() {
return $(this).find('#row3');
});
或者你也可以这样做:
$('#main tbody').prepend($('#row3'));
因为ID应该是唯一的
请注意,尽管您没有指定tbody
元素,但浏览器始终会插入一个。这就是为什么不能将行前置到表
元素的原因
更新:正确地说,事实上你可以,正如@Šime Vidas指出的那样
参考:简单的js方式是:
var row = document.getElementById('row3');
var parent = row.parentNode;
parent.insertBefore(row, parent.firstChild);
像这样
$("#row3").mouseenter(function () {
$("#row1").before($(this));
})
小提琴:
或者这个:
$("#row3").click(function () {
$(this).parent(":first-child").before($(this));
})
Fiddle:请注意,prepend将移动它,而不是复制它。这是所需的功能。
table.prepend(行)
可能无法工作,因为每一行都在t正文中。Trytable.find('tbody').prepend(行)代码>@FelixKling:很好。我现在在.detach()
ing之前抓取父对象。您不能将选择器传递给.prepend
,而且您可以完全删除行3
@西梅维达斯:很有趣。但我认为这只是浏览器纠正了这一点。最简洁的答案是:$('main tbody')。prepend($('row3'));
$("#row3").mouseenter(function () {
$("#row1").before($(this));
})
$("#row3").click(function () {
$(this).parent(":first-child").before($(this));
})