JQuery - добавить событие клика к элементам LI или SPAN? - PullRequest
8 голосов
/ 07 мая 2009

Я пытаюсь добавить событие щелчка к элементу LI, но оно не запускается на странице. Моя разметка страницы выглядит так:

<div id="Navigation">
<ul>
    <li class="navPrevNext inactive">|&lt; First Page</li>
    <li class="navPrevNext inactive">&lt; Prev Page</li>
    <li class="navIndex selected" title="0 ">1</li>
    <li class="navIndex notselected" title="1 ">2</li>
    <li class="navIndex notselected" title="2 ">3</li>
    <li class="navPrevNext active" title="1">Next Page &gt;</li>
    <li class="navPrevNext active" title="2">Last Page &gt;|</li>
</ul>
</div>

И в моем коде JS у меня есть:

$("#Navigation li").live('click', function(e) { e.preventDefault; this.blur(); return updateNavigation($(this).attr('title')); });

Есть мысли?

ТИА

Ответы [ 4 ]

14 голосов
/ 07 мая 2009

Вы уверены, что JQuery 1.3 включен в ваш код? Следующее работает отлично (прямое копирование и вставка из вашего вопроса) для меня, когда я нажимаю на любой из LI:

<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function updateNavigation(title) {
    alert(title);
}

$("#Navigation li").live('click', function(e) { 
    e.preventDefault; 
    this.blur(); 
    return updateNavigation($(this).attr('title')); 
});

</script>
</head>
<body>
<div id="Navigation">
<ul>
    <li class="navPrevNext inactive">|&lt; First Page</li>
    <li class="navPrevNext inactive">&lt; Prev Page</li>
    <li class="navIndex selected" title="0 ">1</li>
    <li class="navIndex notselected" title="1 ">2</li>
    <li class="navIndex notselected" title="2 ">3</li>
    <li class="navPrevNext active" title="1">Next Page &gt;</li>
    <li class="navPrevNext active" title="2">Last Page &gt;|</li>
</ul>
</div>
</body>
</html>

Вы уверены, что ваша функция updateNavigation работает правильно? Может быть, это срабатывает, но что-то не так в этом ...

0 голосов
/ 04 июля 2012

не используйте span, лучше делегировать

0 голосов
/ 10 декабря 2009

У меня была похожая проблема, когда я использовал всплывающий список, который выбрал пользователь. В основном пользователь нажимает на поле ввода, и открывается ul.

Это прекрасно работало с анимацией 500 мс, но при переключении на 250 мс анимация прокрутки была слишком быстрой и, очевидно, событие щелчка никогда не срабатывало.

0 голосов
/ 07 мая 2009

Я сделал то же самое, что и @Parrots, и у меня это работает. Однако вы можете изменить селектор на:

$("#Navigation li[title]" ).live('click', function(e) {
     e.preventDefault;
     this.blur();
     return updateNavigation($(this).attr('title'));
});

Так что обработчик применяется только к элементам, которые имеют атрибут title.

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