新手问题 关于 ajax 的一点疑问

luliangshu · 2014年01月03日 · 最后由 beiersi 回复于 2014年01月03日 · 2065 次阅读

我有一个 ajax 效果 就是请求一段 html。使用的是 remote true

理论上 过程是这样:点击一个连接后。这个连接滚动到页面顶部 然后再出现请求的 html 在这个连接的下面(ps:也就是类似 当连接滚动完成后再显示 html)

如果是我使用原生的 ajax 的话 倒是挺简单 可以在滚动到顶部的后发起一个回调。

但是 rails 的 remote true 这种方式如何处理 我没法控制他在滚动结束后再响应 ajax。导致一边滚动一边解析。滚动起来一卡一卡的

如果哪位大神闲字太多 懒得看。。总结就是 使用 remote true 时如何阻止默认的 ajax 等我执行完一个动作后在调用 ajax

evert.preventDefault() 然后在动画的 callback $form.submit() 看看。

@Rei event.preventDefault() 视乎不能阻止他 还是会响应 ajax

好长一段,应该是 js 单线程没有理解清楚吧; 没看具体代码不知道如何解决,尝试把 ajax 的内容,放到滚动到顶部的 callback 里面去写。 另外,据我所知应该没有滚动到顶部的 handler 的,可以 setTimeout 一下,或者自定义一个时间。

@xlaok 我的意思 就是如果使用原生的话 就简单了在 callback 里面写 但是使用 remote true 的话 他自动就完成了这一个流程 我没法阻止他响应。我点击的时候 滚动效果和 ajax 事件就一起发送了。

哪位有合适的方案。。。

可以试试把滚动效果放到 ajax:before 中执行 https://github.com/rails/jquery-ujs/wiki/ajax

需要 登录 后方可回复, 如果你还没有账号请 注册新账号