Объект ожидается с использованием JQuery с BlogEngine.net - PullRequest
1 голос
/ 06 октября 2009

У меня есть следующий код:

 <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() {
    });

Страница не загружается при загрузке с "Ожидается объект". Если я наведу курсор мыши на $ (document) в Visual Studio, он развернется, чтобы показать его свойства. Здесь нет другого объекта, поэтому, если он не работает в библиотеке jquery, что еще может быть причиной этого?

Не должно быть никаких столкновений со сценарием BlogEngine. Я переименовал все переменные $ в $ BE в blog.js, так что JQuery получает единственное использование $.

Ответы [ 2 ]

2 голосов
/ 25 октября 2009

Наиболее вероятная причина сбоя заключается в том, что $(document).ready() появляется перед тегом jQuery, включающим тег.

То, как или почему это не получится, зависит от того, как вы включаете файл, но один из способов решить эту проблему - использовать 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 и любых других js-файлах, которые поставляется вместе с BlogEngine.NET, либо использовать jQuery $.noConflict(); и затем оберните ваш код jQuery в самовозглашающуюся анонимную функцию, например так:

(function($) {

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

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

})(jQuery);

, чтобы вы все еще могли использовать сокращение $ для jQuery внутри функции.

0 голосов
/ 06 октября 2009

Я не знаю, почему ваш пример терпит неудачу, но я почти уверен, что вы можете получить документ.

$(function() {

});
...