Hec*_*eal 7 jquery coffeescript ruby-on-rails-3 pjax
我正在尝试pjax我正在开发的应用程序,但我有点撞墙了.
也许我会以错误的方式解决这个问题,让我解释一下.
在应用程序中,我有一个主菜单在顶部,具有不同的部分.此菜单中的每个链接都启用了pjax,这意味着只有应用程序的主体才会更改.
通常,当您单击没有pjax的链接时,将触发document.ready方法.我使用它将事件绑定到按钮,如下例所示.
这是我的users.js.coffee文件
loaded = false;
$ ->
$("#btn_new_user").bind "click", (event) ->
if not loaded
@path = $('#btn_new_user').attr("path")
$("#new-users-container").load(@path)
loaded = true
$("#new-users-container").slideToggle()
Run Code Online (Sandbox Code Playgroud)
正如您在此示例中所看到的,当"用户"页面完成加载时,它将绑定一个带有事件的按钮,该事件将表单加载到div中并对其进行动画处理以显示它.
但是,当我从管理员的其他部分开始并单击"用户"链接以显示此按钮时,该事件不会绑定.当我在"用户"部分重新加载页面时,document.ready触发器和按钮工作正常.
是否有更好的技术将事件绑定到按钮或是否有某种方法可以在pjax上触发document.ready?
谢谢.
好吧,昨天学到了一些东西。
首先,像这样声明 CoffeeScript 将使代码仅可用于该文件,而无法在其他任何地方访问。
解决这个问题的常见方法是,例如
Users =
aMethod: ->
// some code
window.Users = Users
Run Code Online (Sandbox Code Playgroud)
然后在其他地方你可以做
window.aMethod
Run Code Online (Sandbox Code Playgroud)
无论如何,这只是问题的一部分,真正的解决方案是使用委托http://api.jquery.com/delegate/方法,它允许您在元素不存在的情况下绑定元素。
| 归档时间: |
|
| 查看次数: |
3955 次 |
| 最近记录: |