【发布时间】:2012-12-05 15:01:29
【问题描述】:
我正在使用 Ruby on Rails、jQuery v1.8.3 和 jQuery UI v1.9.2。在视图文件中,我以这种方式呈现部分模板:
<%= render :partial => 'template_name', :locals => { :div_id => 'div_id1' } %>
相关的template_name 文件包含以下内容:
<script type="text/javascript">
var item = $('#<%= div_id %>')
alert(item.selector) // Display #div_id1
</script>
在同一页面上,通过 AJAX 请求,我检索并添加到 DOM 相同的部分模板,但使用 :locals => { :div_id => 'div_id2' }:
<script type="text/javascript">
var item = $('#<%= div_id %>')
alert(item.selector) // Display #div_id2
</script>
进行上述操作,在 AJAX 请求之后,我“丢失”了对#div_id1 的引用,因为item 与#div_id2 相关。
我应该如何处理这种情况以避免“覆盖”变量?如何“隔离”(可能是命名空间或使用一些 jQuery 功能)这些变量?
【问题讨论】:
-
真正的问题是:你使用的是全局变量
-
我会避免尝试将客户端 JavaScript 与服务器端输出混合在一起。
-
@apneadiving - 我应该如何使这些变量成为本地变量?
-
无论你在做什么,你都应该确定它的范围,它确实是每个可靠的 js 架构的基础。
-
@Explosion Pills - 在我的情况下,应如何避免将客户端 JavaScript 与服务器端输出混合?
标签: javascript jquery ruby-on-rails ajax rendering