如何处理DOM更改覆盖某些变量的情况?

时间:2012-12-05 15:01:30

标签: javascript jquery ruby-on-rails ajax rendering

我正在使用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功能)这些变量?

1 个答案:

答案 0 :(得分:0)

如果代码段是自包含的,您应该只需将代码移动到私有范围内。

<script type="text/javascript">
    (function(){
        var item = $('#<%= div_id %>');
        alert(item.selector); // Display #div_id2
    })();
</script>

虽然我不同意服务器端代码生成基于javascript的ui小部件。