Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery方法不适用于缓存的子对象_Javascript_Jquery_Dom - Fatal编程技术网

Javascript JQuery方法不适用于缓存的子对象

Javascript JQuery方法不适用于缓存的子对象,javascript,jquery,dom,Javascript,Jquery,Dom,在JQuery中,我们几乎可以缓存选择器返回的任何对象,在我的例子中,我将所选元素(在表中)的子元素()缓存在一个名为行的变量中 然后,我在行上调用JQuery方法,这些方法处理单个行。例如,如果总共有5行,我想交换第一行和最后一行: rows.eq(4).after(row1); rows.eq(0).before(row5); 然而,这是行不通的。第一行到达底部,但底部的一行没有到达顶部 它的工作原理是在每次操作中获得孩子们的新副本。有关比较,请参见: 是什么导致缓存方法出现问题?更改DO

在JQuery中,我们几乎可以缓存选择器返回的任何对象,在我的例子中,我将所选元素(
在表中)的子元素(
)缓存在一个名为
的变量中

然后,我在
行上调用JQuery方法,这些方法处理单个行。例如,如果总共有5行,我想交换第一行和最后一行:

rows.eq(4).after(row1);
rows.eq(0).before(row5);
然而,这是行不通的。第一行到达底部,但底部的一行没有到达顶部

它的工作原理是在每次操作中获得孩子们的新副本。有关比较,请参见:


是什么导致缓存方法出现问题?

更改DOM中的行顺序后,jQuery对象中的顺序不会更改

So
t1_行。等式(4)。之后(t1_行1)将第一行移到底部(第1行在jQuery对象的第五行之后)。然后
t1_行.eq(0).before(t1_行5)尝试将最后一行放在第1行之前。因为它已经存在,所以您看不到任何更改


也许您正在考虑
el.after(something)
el
放置在
something
之后,但反过来说,它实际上将
something
放置在
el

之后更改DOM中的行顺序后,jQuery对象中的顺序不会更改

So
t1_行。等式(4)。之后(t1_行1)将第一行移到底部(第1行在jQuery对象的第五行之后)。然后
t1_行.eq(0).before(t1_行5)尝试将最后一行放在第1行之前。因为它已经存在,所以您看不到任何更改


也许您正在考虑
el.after(something)
el
放置在
something
之后,但反过来说,它实际上将
something
放置在
el

之后更改DOM中的行顺序后,jQuery对象中的顺序不会更改

So
t1_行。等式(4)。之后(t1_行1)将第一行移到底部(第1行在jQuery对象的第五行之后)。然后
t1_行.eq(0).before(t1_行5)尝试将最后一行放在第1行之前。因为它已经存在,所以您看不到任何更改


也许您正在考虑
el.after(something)
el
放置在
something
之后,但反过来说,它实际上将
something
放置在
el

之后更改DOM中的行顺序后,jQuery对象中的顺序不会更改

So
t1_行。等式(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中的行的顺序