jquery的append问题

发布网友 发布时间:2022-04-22 05:39

我来回答

5个回答

懂视网 时间:2022-05-15 19:51

简单举例说明:

//html<p class="answer"></p>

描述:
功能:下滑加载更多,通过ajax请求到数据把组装好的html模板插入到list中。
实现:通过

$('.list').append('_html');

方法把一个html模板插入到.list中,但是,触发加载更多多次后发现append()方法执行越来越慢。

解决: 经排查,发现是要插入的_html模板中也存在.list类,所以,当多次插入后执行$('.list').append('_html');时,$('.list')的时间会越来越长。

热心网友 时间:2022-05-15 16:59

由于没有代码, 只能猜测.

你的唯一一句代码中 $(span) 的 span 是一个变量, 它应该指向 Dom中的某一个元素, 现在即使用$(span) 重新包装了一次, 但它还是指向同一个span,

因此无论你做N次循环,
你的代码 $("#mydiv").append($(span));
做的事情就是:

获取元素span, 插入到div Id为mydiv中;
再次获取元素span, 插入到div Id为mydiv中(span本来就处于div中, 页面无任何变化);
再次获取元素span, 插入到div Id为mydiv中(span本来就处于div中, 页面无任何变化);
...
...

热心网友 时间:2022-05-15 18:17

// 可以使用闭包,或者外部方法的方式。
// 1)使用外部方法,可以把你的 $("#mydiv").append(); 提取出来如下
// 然后在循环添加的时候,使用 AddSpan($(span));
function AddSpan(myspan){
$("#mydiv").append($(myspan));
}
// 2)使用闭包的方法,这个具体还要看你的方法的内容来添加,所以建议直接用第一种吧
(function(){
var myspan = $(span);
$("#mydiv").append(myspan);
})();

热心网友 时间:2022-05-15 19:51

你span是一个变量吗??按道理是不会啊,你看下我的附件,都可以按顺序添加的。。。你的结构和jquery是怎样的??能贴出来看看嘛??或者你到这边在线写好你的页面挂个链接出来看看

http://jsbin.com/welcome/1/edit

网友也比较好判断

热心网友 时间:2022-05-15 21:43

应该每次创建新的span,我想你这里是创建一个span之后移来移去的了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com