2010-06-16 69 views
2

I am making a real estate non interactive display for their shop windowDOM中的元素堆积如此糟糕吗?

我已经踢了jCarousel去做什么,我想:

  • 每AJAX
  • 添加面板迈向当前集的结尾,去和AJAX一些新的面板和插入它们

这工作正常,但它似乎调用jQuery的remove()上的先前元素导致丑陋的凹凸。我不确定是否调用hide()将释放任何资源,因为元素仍然存在(并且该元素无论如何都将被关闭)。

我见过this,并在回调中尝试carousel.reset()。它只是清除了所有的元素。

这将在Windows XP上的谷歌浏览器上运行,并将仅在液晶电视上显示。

我想知道,如果我无法找到一个合理的解决方案,以除去多余的DOM元素,将其带到我的应用程序来抓取,或将Chrome浏览器做一些聪明的垃圾收集?

或者,你怎么会解决这个问题?

谢谢

+0

如何我们在这里谈论的很多元素?如果他们没有数据清理更快,如果他们有数据/处理程序(您可以通过使用委托或实时避免),它是有点不同,就什么是最有效的。 – 2010-06-16 14:05:49

+0

@Nick Craver感谢您的光临。如果您查看上一个问题中的链接,您会看到我是如何将新项目*添加到jCarousel的。我使用自己的'add()'方法。但是,如果我执行'$('#listing li:lt(5)'),remove()'或类似的清理操作,它会将列表颠倒以填补前面列表项所在的空白处。也许我可以循环访问每个AJAX请求的前10个,获取总高度,然后将ul的“padding-top”设置为该高度(并删除空间中的那些高度)。听起来很笨重。我希望你能为我提供更好的解决方案!再次感谢。 – alex 2010-06-16 14:13:32

回答

1

您可以重复使用旧元素而不是删除它们并添加新元素吗?

+0

也许,但我正在使用第三方jQuery插件,我不确定如何让它做到这一点。你有什么建议吗? – alex 2010-06-16 13:53:04

1

我制定了一个修复程序,结果很简单!

简单,因为它变得不可见,尽快把它传递给配置为的jCarousel

itemFirstOutCallback: { 
       onAfterAnimation: function(carousel, li, index, state) { 
       if (state === 'init') return; 

       carousel.remove(index); 

       } 
      } 

基本上,这只是删除列表元素(滚动到负overflow: hidden领土,如果你:))