Где должен размещаться блок скрипта с кодом jquery на главной странице ASP.NET MVC? - PullRequest
6 голосов
/ 23 ноября 2008

Приступая к работе с jquery и испытывая проблемы с получением примера hello world type для asp.net mvc. Я получаю сообщение об ошибке «ожидаемый объект» при попытке загрузить страницу с помощью этого сценария.

A. Где теги скрипта должны быть размещены на главной странице? B. Что я могу делать не так? На моей странице определенно есть элементы "a"?

<script src="../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>

            <script src="../Scripts/jquery.corner.js" type="text/javascript"></script>

            <script type="text/javascript">
                $(document).ready(function() {
                    $("a").click(function(event) {
                        alert("Thanks for visiting!");
                    });
                });
            </script>

Ответы [ 4 ]

11 голосов
/ 23 ноября 2008

Хммм ...

Чтобы ответить на ваш первый вопрос: их следует поместить в элемент <head>.

Кроме того, обычно я использую метод 'bind' при потоплении событий в DOM (похоже, вы пытаетесь это сделать).

Итак, код будет выглядеть так:

$(document).ready(function()
{
    //  Bind each link to a handler:
    $("a").bind('click dblclick', function(event)
    {
         alert('click');
    })
});

Также несколько советов по дизайну (поскольку вы работаете с чем-то близким мне по духу (ASP.NET MVC с jQuery):

Добавьте дополнительный ContentPlaceHolder внизу элемента <head> вашей главной страницы. Это позволит вам запускать javascript для конкретной страницы в правильном месте: в разделе 'head' страницы, и это позволит вам включать javascript для конкретной страницы.

Это будет выглядеть примерно так:

    <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
</head>

Почему это полезно? Я скажу вам: используемый вами плагин с закругленными углами jQuery может использоваться только на нескольких страницах - зачем включать его на каждой странице?

2 голосов
/ 23 ноября 2008

Я согласен с Дэном добавить заполнитель контента для ссылок в скриптах. Тем не менее, голова обычно не лучшее место, чтобы поставить ваш JavaScript с точки зрения производительности. Лучшее место в нижней части страницы. Таким образом, ваш HTML может загружаться раньше, чем ваш JavaScript. См. совет YSlow от Yahoo . Ваш код должен все еще работать в разделе заголовка.

Мне нравится размещать большую часть JavaScript моего сайта в одном файле и связывать его со всеми страницами. Если он становится очень большим, вы можете разделить его на несколько файлов. Это использует преимущества кэширования браузера.

Что касается того, что не так с кодом jQuery. Я не уверен. Это выглядит довольно правильно. Единственное, что меня интересует, это параметр события. Попробуйте убрать это вообще. Я знаю, что функции разрешен параметр, но я обычно использую вместо этого "this". Также попробуйте переименовать параметр.

1 голос
/ 25 ноября 2008

Главная страница обычно хранится в /Views/Shared/Site.Master, а скрипты находятся в / Scripts, поэтому они:

<script src="../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>            
<script src="../Scripts/jquery.corner.js" type="text/javascript"></script>

должно быть

<script src="../../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.corner.js" type="text/javascript"></script>

но я бы предложил использовать помощника:

  public static class Helper
    {
        private static string ScriptsRoot = "~/scripts/";

        public static string ScriptUrl (string scriptFile)
        {
            return VirtualPathUtility.ToAbsolute (ScriptsRoot + scriptFile);
        }
    }

И затем ссылка на ваш скрипт выглядит так:

<script type="text/javascript" src="<%= Helper.ScriptUrl("jquery-1.2.6.min.js") %>"></script>
<script type="text/javascript" src="<%= Helper.ScriptUrl("jquery.corner.js") %>"></script>
1 голос
/ 23 ноября 2008

B) Я проверил ваш встроенный скрипт на странице быстрого теста, и он работает нормально, поэтому я советую использовать Firefox с FireBug установленным плагином для поиска проблемы:

  • На вкладке «скрипт» Firebug используйте окно Watch справа, чтобы вставить и проверить части вашего скрипта и посмотреть, что они возвращают.
  • Я бы начал с помещения $ в окно просмотра и проверки, распознается ли оно как function(): возможно, jQuery не связан должным образом
  • Затем поместите $("a") в окно просмотра и проверьте, имеет ли возвращаемый набор правильный номер. предметов, соответствующих селектору "a" в наборе
  • Продолжайте запускать части скрипта, пока не встретите что-то не так
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...