使用JQuery和BlogEngine.net预期的对象

时间:2009-10-06 16:34:58

标签: jquery object blogengine.net

我有以下代码:

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
    });

页面因“预期的对象”而加载失败。如果我将鼠标悬停在Visual Studio中的$(文档)上,它将展开以显示其属性。这里没有其他对象,所以除非它在jquery库中失败,否则还有什么可能导致这个?

BlogEngine脚本不应该发生任何冲突。我在blog.js中将所有$变量重命名为$ BE,因此JQuery只使用$。

2 个答案:

答案 0 :(得分:2)

为什么失败的最可能原因是{j}脚本包含标记之前出现$(document).ready()

它失败的方式或原因将取决于你如何包含文件,但解决此问题的一种方法是在AddJavaScriptInclude()静态类中使用BlogEngine.NET的Utils并在其中添加jQuery BlogBasePage类'OnLoad方法。

例如,

public abstract class BlogBasePage : System.Web.UI.Page
{
    /* other BlogBasePage methods, properties, fileds, etc */

    /// <summary>
    /// Adds links and javascript to the HTML header tag.
    /// </summary>
    protected override void OnLoad(EventArgs e)
    {
        /* other BlogEngine.NET code ... */

        // add jQuery to html <head> section. I've put my scripts
        // in a folder named 'scripts'
        AddJavaScriptInclude(Utils.RelativeWebRoot + "scripts/jquery-1.3.2.min.js", false, false);
    }

}

现在jQuery将包含在<head>中。如果您在母版页中有脚本,那么我建议将其放入<body>以确保jQuery脚本包含在您的代码之前并避免与之前相同的情况;如果你的脚本在另一个外部文件中,那么你也可以使用AddJavaScriptInclude()将它包含在页面中,只需确保它在添加jQuery文件后出现。

另外需要注意的一点是,重命名Blog.js文件中的变量$和BlogEngine.NET随附的任何其他js文件,或者使用jQuery的{{$.noConflict();可能是明智的。 1}}然后将jQuery代码包装在一个自动调用的匿名函数中,如此

(function($) {

    // I can still use $ here for shortahnd for jQuery.

    $(document).ready(function() {
        // code to run when the DOM has loaded
    });

})(jQuery);

这样你仍然可以在函数内使用$简写jQuery。

答案 1 :(得分:0)

我不知道为什么你的例子失败了,但我很确定你可以通过这样做来获得这份文件。

$(function() {

});