Javascript JQuery方法不适用于缓存的子对象
在JQuery中,我们几乎可以缓存选择器返回的任何对象,在我的例子中,我将所选元素(Javascript JQuery方法不适用于缓存的子对象,javascript,jquery,dom,Javascript,Jquery,Dom,在JQuery中,我们几乎可以缓存选择器返回的任何对象,在我的例子中,我将所选元素(在表中)的子元素()缓存在一个名为行的变量中 然后,我在行上调用JQuery方法,这些方法处理单个行。例如,如果总共有5行,我想交换第一行和最后一行: rows.eq(4).after(row1); rows.eq(0).before(row5); 然而,这是行不通的。第一行到达底部,但底部的一行没有到达顶部 它的工作原理是在每次操作中获得孩子们的新副本。有关比较,请参见: 是什么导致缓存方法出现问题?更改DO
在表中)的子元素(
)缓存在一个名为行
的变量中
然后,我在行上调用JQuery方法,这些方法处理单个行。例如,如果总共有5行,我想交换第一行和最后一行:
rows.eq(4).after(row1);
rows.eq(0).before(row5);
然而,这是行不通的。第一行到达底部,但底部的一行没有到达顶部
它的工作原理是在每次操作中获得孩子们的新副本。有关比较,请参见:
是什么导致缓存方法出现问题?更改DOM中的行顺序后,jQuery对象中的顺序不会更改
Sot1_行。等式(4)。之后(t1_行1)代码>将第一行移到底部(第1行在jQuery对象的第五行之后)。然后t1_行.eq(0).before(t1_行5)代码>尝试将最后一行放在第1行之前。因为它已经存在,所以您看不到任何更改
也许您正在考虑el.after(something)
将el
放置在something
之后,但反过来说,它实际上将something
放置在el
之后更改DOM中的行顺序后,jQuery对象中的顺序不会更改
Sot1_行。等式(4)。之后(t1_行1)代码>将第一行移到底部(第1行在jQuery对象的第五行之后)。然后t1_行.eq(0).before(t1_行5)代码>尝试将最后一行放在第1行之前。因为它已经存在,所以您看不到任何更改
也许您正在考虑el.after(something)
将el
放置在something
之后,但反过来说,它实际上将something
放置在el
之后更改DOM中的行顺序后,jQuery对象中的顺序不会更改
Sot1_行。等式(4)。之后(t1_行1)代码>将第一行移到底部(第1行在jQuery对象的第五行之后)。然后t1_行.eq(0).before(t1_行5)代码>尝试将最后一行放在第1行之前。因为它已经存在,所以您看不到任何更改
也许您正在考虑el.after(something)
将el
放置在something
之后,但反过来说,它实际上将something
放置在el
之后更改DOM中的行顺序后,jQuery对象中的顺序不会更改
Sot1_行。等式(4)。之后(t1_行1)代码>将第一行移到底部(第1行在jQuery对象的第五行之后)。然后t1_行.eq(0).before(t1_行5)代码>尝试将最后一行放在第1行之前。因为它已经存在,所以您看不到任何更改
也许你是想把el.after(某物)
放在el
之后,但反过来说,它实际上把某物
放在el
之后,让我把你的代码翻译成英语
首先,将第1行插入第5行之后
然后,将第5行插入第1行之前
第二个操作不执行任何操作,因为行1已移动到列表的底部。就在第5行之前。让我把你的代码翻译成英语
var tbody = $(document.getElementById('t1_parent')),
first_row = tbody.find('tr:eq(0)'),
last_row = tbody.find('tr:eq(4)');
last_row.prependTo(tbody);
first_row.appendTo(tbody);
首先,将第1行插入第5行之后
然后,将第5行插入第1行之前
第二个操作不执行任何操作,因为行1已移动到列表的底部。就在第5行之前。让我把你的代码翻译成英语
var tbody = $(document.getElementById('t1_parent')),
first_row = tbody.find('tr:eq(0)'),
last_row = tbody.find('tr:eq(4)');
last_row.prependTo(tbody);
first_row.appendTo(tbody);
首先,将第1行插入第5行之后
然后,将第5行插入第1行之前
第二个操作不执行任何操作,因为行1已移动到列表的底部。就在第5行之前。让我把你的代码翻译成英语
var tbody = $(document.getElementById('t1_parent')),
first_row = tbody.find('tr:eq(0)'),
last_row = tbody.find('tr:eq(4)');
last_row.prependTo(tbody);
first_row.appendTo(tbody);
首先,将第1行插入第5行之后
然后,将第5行插入第1行之前
第二个操作不执行任何操作,因为行1已移动到列表的底部。就在第五排之前
var tbody = $(document.getElementById('t1_parent')),
first_row = tbody.find('tr:eq(0)'),
last_row = tbody.find('tr:eq(4)');
last_row.prependTo(tbody);
first_row.appendTo(tbody);
编辑:
没关系。找到了另一种解决办法
编辑:
没关系。找到了另一种解决办法
编辑:
没关系。找到了另一种解决办法
编辑:
没关系。找到了另一个解决方案。“更改DOM中的行顺序后,jQuery对象中的顺序不会更改。”这是关键!那么,这是否意味着如果我们想要连续地操纵DOM中的行的顺序,我们需要在每次操纵时始终获得行的新副本?i、 例如,调用.children()
?您还可以使用.index
检查DOM中的当前索引,例如t1\u row1.index()
“更改DOM中的行顺序后,jQuery对象中的顺序不会更改。”这就是关键!那么,这是否意味着如果我们想要连续地操纵DOM中的行的顺序,我们需要在每次操纵时始终获得行的新副本?i、 例如,调用.children()
?您还可以使用.index
检查DOM中的当前索引,例如t1\u row1.index()
“更改DOM中的行顺序后,jQuery对象中的顺序不会更改。”这就是关键!那么,这是否意味着如果我们想要连续地操纵DOM中的行的顺序,我们需要在每次操纵时始终获得行的新副本?i、 例如,调用.children()
?您还可以使用.index
检查DOM中的当前索引,例如t1\u row1.index()
“更改DOM中的行顺序后,jQuery对象中的顺序不会更改。”这就是关键!那么,这是否意味着如果我们想要操纵domcont中的行的顺序