大家好,
现在是我第四次尝试在 Rails 应用程序中实现 history.js。我有一种方法运行得很好,但是代码太丑了。今天我再次查看代码并想:我怎样才能使它更好,更容易,更干?!
到目前为止我所做的(并且工作得很好,并不完美):
- 设置
remote: true为我的链接 - jquery-ujs 获取
js.erb
我的 HTML 看起来像:
<body>
<div id="content">
some content with buttons, etc.
</div>
</body>
js.erb包含:
History.pushState(
{
func: '$(\'#content\').html(data);',
data: '<%= j(render template: "news/index", formats: [:html]) %>'
},
'test title',
'<%= request.url %>'
);
然后 history.js 获取该函数并为其提供数据。所以它将content-div 替换为新生成的代码。它还会更新 URL。这段代码我必须放在每个(!)js.erb文件中。
我最后想让它不那么难看的想法是:
- 设置
remote: true为我的链接 - 当一个链接被点击时,它会获取一些
js.erb替换content-div - 所有链接
data-remote="true"都将获得一个ajax:success-handler - 在
ajax:success新 URL 上被推送到 history.js
但是里面还有一个问题。然后我有 JavaScript 代码:
$(document).on('ajax:success', 'a[data-remote="true"]', function() { ... });
问题是:ajax:success如果我替换div链接(应该触发事件)所在的 -tag,则永远不会触发。
也许有人可以解决我的问题...