从Orchard模块页面使用jQuery

12

我正在尝试修改 Orchard.Search 部分的搜索表单和按钮,使其外观和行为符合我的要求。为此,我需要使用一些jQuery功能。

我将以下内容添加到 Search.SearchForm.cshtml 文件的头部:

Script.Require("jQuery");

我可以从页面输出中看到,jQuery被添加在HTML结束标签之前,也就是在页面底部:

<script src="/Orchard.Web/Modules/Orchard.jQuery/scripts/jquery-1.4.2.js" type="text/javascript"></script>

看上去很好。那里有jQuery库,我可以毫无问题地从那个位置下载它。我还在页面中添加了一个小的测试脚本,只是为了看看jQuery是否正常工作:

<script language="javascript" type ="text/javascript">

$(document).ready(function () { 
  alert('page loaded');
});

</script>

但它从未被触发,我收到了这个脚本错误:Uncaught ReferenceError: $ is not defined

我对此感到厌倦,太麻烦了,但我想我一直做错了...

编辑:添加了jQuery标签,并尝试了关于Script.Foot()的建议答案,似乎可以工作:

@using(Script.Foot()) {
    <script type ="text/javascript">
    //<![CDATA[
        $(document).ready(function () {
            alert('page loaded');
        });
    //]]>
    </script>
}

1
请在涉及jQuery的问题中使用“jquery”标签。谢谢。 - YasirA
1个回答

25

你的脚本需要在引入jQuery之后才能出现,否则$是无意义的。你可以通过用@using(Script.Foot) { ...}来包围你的脚本来添加它:

@using(Script.Foot()) {
    <script type ="text/javascript">
    //<![CDATA[
    $(document).ready(function () { 
        alert('page loaded');
    });
    //]]>
    </script>
}

当然,那就是问题所在。但你建议使用(Script.Foot)的代码会崩溃并显示CS1674错误:'method group': type used in a using statement must be implicitly convertible to 'System.IDisposable',这很奇怪。 - Johan Danforth
啊,搞定了!@using(Script.Foot()) 缺少括号:)。非常感谢你的帮助。 - Johan Danforth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接