jQuery 在使用 @Html.Raw 生成的视图中无法识别

jQuery unrecognized in a view that is generated using @Html.Raw

我有一个包含 jQuery 的 Razor 视图,此视图上的 JavaScript 函数可识别 jQuery。我还有多个 div 元素,其中包含其他视图 html 在此视图中使用

之类的东西
@foreach(Record record in records)
{
    <div>@Html.Raw(record.RecordHtml)</div>
}

如果我在带有 div 的 foreach 中包含一个 JavaScript 函数,它无法识别 jQuery。

    @foreach(Record record in records)
    {
        <div>@Html.Raw(record.RecordHtml)</div>
        <script>            
            function getElement()
            {
                $("#recordId");
            }
        </script>
    }

解决此问题的方法是在每次迭代中包含 jQuery,但我不明白如果 jQuery 已包含在主视图中,为什么需要这样做。

有人可以解释为什么每个 div 需要自己的 jQuery 包含吗?

有一个误会。 肯定不需要在每次迭代中都包含 jquery。 为了证明这一点,将您的代码更改为

 <script src="path/to/jquery.js" type="text/javascript"></script>
 @foreach(Record record in records)
    {
        <div>@Html.Raw(record.RecordHtml)</div>
        <script>            
            function getElement()
            {
                $("#recordId");
            }
        </script>
    }

注意,jquery 明确包含在 for 循环之前。

真正的问题是 jquery 在插入这些脚本之前未加载。是的,jQuery 最终可能会被加载。

但是,您需要检查主布局和部分布局的加载顺序和使用,以确保 jQuery 之前加载。