JQuery - Как получить все данные - PullRequest
1 голос
/ 05 мая 2009

У меня в приложении MVC есть пейджинговое меню PartialView, которое выглядит следующим образом:

    <%  if (Model.TotalPages > 5) 
    {
        int index = Model.PageIndex;
        int minIndex = index - 2;
        int maxIndex = index + 2;
        if (index < 2) 
        { 
            minIndex = 0; 
            maxIndex = 4; 
        }
        if (index > Model.TotalPages - 2) 
        { 
            minIndex = Model.TotalPages - 5; 
            maxIndex = Model.TotalPages; 
        }
        for (int i = minIndex; i <= maxIndex; i++)
        { %>    
            <li>
                <span class="<%= Html.GetClass((i==index), "selected", "notselected") %>">
                    <a href="<%= Url.Action("TypeNav", "Catalog", new { controller = "Catalog", action = "TypeNav", group = Model.ProductGroup, position = 0, index = i, browseSize = 6 } ) %>" class="<%= Html.GetClass((i==index), "selected", "notselected") %>">
                        <%= i + 1%>
                    </a>
                </span>
            </li>
<%      } 
    } 
    else 
    {
        for(int i=0; i<Model.TotalPages; i++) { %>    
            <li>
                <span class="<%= Html.GetClass((i==Model.PageIndex), "selected", "notselected") %>">
                    <a href="<%= Url.Action("TypeNav", "Catalog", new { controller = "Catalog", action = "TypeNav", group = Model.ProductGroup, position = 0, index = i, browseSize = 6 } ) %> ">
                        <%= i+1 %>
                    </a>
                </span>
            </li>
<%      }
    } %>

Чего я не могу понять, так это как установить событие JQuery click для тегов Anchor. Якорные теги не имеют атрибута NAME, и мой (очень) ограниченный опыт работы с JQuery заключается в том, что для работы ему необходимы атрибуты NAME.

Любые указатели приветствуются.

ТИА

Ответы [ 2 ]

4 голосов
/ 05 мая 2009

вы просто должны быть в состоянии сделать что-то вроде:

$("a").click(function(){
     alert("I've been clicked");
});
1 голос
/ 05 мая 2009

Вы можете указать любой селектор CSS, чтобы получить ваши теги, а не просто имя / идентификатор. Например, если вы хотите, чтобы все теги привязки в вашем документе подписывались на ваше событие, например,

$("a").click(function() { /* Do magic */ });

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

Если вы хотите, чтобы ваши теги имели общее поведение, иногда просто проще дать им собственный класс CSS, чтобы вы могли подключать события с помощью более простого селектора

$(".pagerLink").click(function() { /* Do magic */ });

Если вам не нравится мысль о том, что альтернативой является присвоение ID тегу, содержащему UL, тогда используйте селектор потомка

$("#yourPager a").click(function() { /* Do magic */ });

или, глядя на вашу разметку, можно также выбрать дочерний селектор

$("span.selected > a, span.notselected > a")
      .click(function() {/* Do magic */ });

т.е. Найдите все теги, которые являются непосредственными потомками тегов span, которые либо имеют выбранный класс, либо не выбранный класс.

Стоит помнить, что вы должны отменить поведение тега по умолчанию (например, перейти к своей ссылке), вы можете сделать это, либо вернув false из вашего обработчика событий, либо используя jQuery объект события и вызвав preventDefault

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...