0

我有一个 asp.net razor 部分视图,它在一页上多次使用。在那个部分视图中,我在 $(document).ready() 中有 javascript,我想在部分视图的内容上做一些 jQuery 的东西。

<div class="someclass">
</div>
<script>
    $(document).ready(function() {
        $('.someclass').dosomething();
    ));
</script>

所以问题是当这个局部视图在一页上多次使用时,$('.someclass') 返回到很多元素。我怎样才能实现 $('.someclass') 只返回预期的元素?

我看到的唯一解决方案是为元素生成一个唯一的 id 并在 jQuery 选择器中使用它。但我不喜欢为此生成 id。

还有其他解决方案的想法吗?

4

2 回答 2

0

一个快速的解决方法是将该类仅用于 init 并在初始化后将其删除,如下所示:

<div class="someclass initSomething">
</div>
<script>
    $(document).ready(function() {
        $('.initSomething').dosomething().removeClass('initSomething');
    ));
</script>
于 2012-10-31T11:14:14.653 回答
0

作为一般规则,您不应在局部视图中包含脚本,如果多次使用/加载局部视图,它将产生意外行为。此外,内联脚本避免了它们被浏览器缓存。尽管有时我们会感到懒惰,但将脚本与视图分开总是最好的做法。

于 2012-11-01T03:13:08.050 回答