【发布时间】:2020-08-30 06:42:09
【问题描述】:
我有一个 ASP.NET 部分视图
<div class="wrapper">
<div class="remove-item"></div>
<input name="Account" class="currency" />
...some more html input elements removed for brevity
</div>
局部视图有自己的 JavaScript
<script type="text/javascript">
$(function(){
$(".remove-item").click(function(){
var i = $("input.currency");
// do something
})
})
</script>
在一个页面上,这个局部视图会出现多次。每个input 元素都有唯一的名称。然而 JavaScript 使用类名选择元素。
问题是当局部视图的第二个实例呈现时,$(".remove-item") 也会从第一个局部视图中选择元素。因为它会扫描整个 DOM。
在这里设置 JavaScript 范围的最佳方法是什么,以便它只选择具有自己范围的元素?
只选择元素
【问题讨论】:
-
仅供参考,将 JavaScript 放在每个局部视图中会减慢您的初始渲染速度。 HTML解析器必须切换到JS引擎,加载&解析&运行JS,然后每次遇到
<script>标签时切换回HTML解析器。如果代码始终相同(即,您不会将服务器端代码写入每个脚本),只需将其放入外部文件并加载一次即可。
标签: javascript jquery asp.net-mvc asp.net-core partial-views