使用胡子模板实现无休止滚动时出现DOM异常8错误;jquery砌石

DOM Exception 8 error when implementing endless scrolling using mustache templates & jquery masonry

本文关键字:异常 DOM 错误 砌石 jquery 滚动 无休止 实现      更新时间:2023-09-26

我正在实现一个受本教程影响很大的无休止滚动效果:

http://railscasts.com/episodes/295-sharing-mustache-templates?view=asciicast

然而,我的做法略有不同,因为我使用的是Jquery Masonry(http://masonry.desandro.com/demos/adding-items.html)在前端。

不管怎样,当我按照如下方式实现时:

jQuery ->
window.endlessScroll = () ->
    if $('#products_page').length   
        new ProductPager
class ProductPager
constructor: ->
    $(window).scroll(@check)
check: =>
    if @nearBottom()
        $(window).unbind('scroll', @check)
        $.getJSON($('#products_page').data('json-url'), @render)
nearBottom: =>
    $(window).scrollTop() > $(document).height() - $(window).height() - 150
render: (products) =>
    boxes= []
    $container = $('#products_page')
    for product in products
        boxes.push Mustache.render $('#mustache_product').html(), product 
    $container.append(boxes).masonry "appended", boxes
    $(window).scroll(@check)

我得到以下错误(Chrome):

未捕获错误:NOT_FOUND_ERR:DOM异常8

我认为问题出在这里:

boxes.push Mustache.render $('#mustache_product').html(), product

因为这将每个模板输出包装在"引号"中,即

["<div>stuff</div>","<div>more stuff</div>"]

而不是:

[<div>stuff</div>,<div>more stuff</div>]

但我对自己做错了什么有点心理障碍。。。。有人愿意帮忙吗?

我通过更仔细地遵循Masonry网站上的示例来实现这一点,结果是:

.
.
.
boxMaker.makeBoxes = ->
  boxes = []
  for product in products
    box = document.createElement("div")
    template = Mustache.render $('#mustache_product').html(), product
    box.className = "box"
    box.innerHTML = template
    boxes.push box
  boxes
$boxes = $(boxMaker.makeBoxes())