主干+;JQuery插件赢得';t工作(用咖啡脚本编写)

主干+;JQuery插件赢得';t工作(用咖啡脚本编写),jquery,jquery-mobile,backbone.js,coffeescript,Jquery,Jquery Mobile,Backbone.js,Coffeescript,好的,我有一个简单的JQuery插件,当应用到一个div时,它将使用预加载图像整齐地加载该div中的所有图像。这个很好用 然而,在主干网中,我在页面加载后将JSON中的数据附加到元素中。因此,下面的代码将不起作用 $(document).ready( -> $("#theList").preloader() ) 因此,在生成列表后,我需要将“$(“#theList”).preload()放在渲染函数中 class HomeView extends Backbone.View co

好的,我有一个简单的JQuery插件,当应用到一个div时,它将使用预加载图像整齐地加载该div中的所有图像。这个很好用

然而,在主干网中,我在页面加载后将JSON中的数据附加到元素中。因此,下面的代码将不起作用

$(document).ready( ->
    $("#theList").preloader()
)
因此,在生成列表后,我需要将“$(“#theList”).preload()放在渲染函数中

class HomeView extends Backbone.View
constructor: ->
    super

initialize: ->
    @isLoading = false

events: {
     "click #nextPage": "nextPage"
     "click #prevPage": "prevPage"  
}


template: _.template($('#home').html())
theListTemplate: _.template($('#theList').html())

render: ->
    $(@el).append(@template)
    @loadResults()
    $("#theList").preloader() #<----------------- DOESN'T WORK NOW


loadResults: () ->
    @isLoading = true

    Properties.fetch({
        success: (data) =>

            #Append properties to list
            $('#theList').append(@theListTemplate({data: data.models, _:_})).listview('refresh')


        error: ->
            @isLoading = false
            alert('Unable to load information')
    })

任何帮助都将不胜感激!谢谢。

假设预加载程序不打算在
loadResults#fetch#success
中添加的节点上操作(因为在调用预加载程序时fetch尚未返回),我怀疑问题在于,在执行
render()
函数期间,视图的
el
还不是DOM的一部分

如果调用
HomeView
like

myHomeView = new HomeView()
$('some selector').append(myHomeView.render().el)
HomeView的el尚未添加到DOM中,它位于分离的文档中

因此,jQuery选择器
$(“#theList”)
返回一个空结果,因为它搜索DOM。这很容易通过console.log'n该选择器的结果,或者使用调试器在中放置断点,并使用console进行测试来验证

谢天谢地,解决办法很容易。您需要通过将选择器范围限定到视图来引用分离的文档,方法如下:

或者,你自己做

$(@el).find("#theList").preloader()

啊!是的。固定的。谢谢你发现了。
@$("#theList").preloader()
$(@el).find("#theList").preloader()