我正在使用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功能)这些变量?
答案 0 :(得分:0)
如果代码段是自包含的,您应该只需将代码移动到私有范围内。
<script type="text/javascript">
(function(){
var item = $('#<%= div_id %>');
alert(item.selector); // Display #div_id2
})();
</script>
虽然我不同意服务器端代码生成基于javascript的ui小部件。