JQuery связать на нескольких якорь - PullRequest
4 голосов
/ 10 сентября 2010

Я бы хотел привязать одно и то же событие к списку якорной ссылки.Почему это не работает?

Разметка:

<a tabindex="0" href="#contactRoles" 
    class="fg-button fg-button-icon-right ui-widget ui-state-default ui-corner-all" 
    id="contactAdd">
    <span class="ui-icon ui-icon-triangle-1-s"></span>Aggiungi contatto</a>

<div id="contactRoles" class="hidden">
<ul>
    <li><a href="#1" class="contactRole">Cliente</a></li>
    <li><a href="#2" class="contactRole">Controparte</a></li>
    <li><a href="#3" class="contactRole">Avvocato</a></li>
    <li><a href="#4" class="contactRole">Avv. Controparte</a></li>
    <li><a href="#5" class="contactRole">Altre parti</a></li>
    <li><a href="#6" class="contactRole">Domiciliatario</a></li>
    <li><a href="#7" class="contactRole">Pubblico Ministero</a></li>
    <li><a href="#8" class="contactRole">Giudice</a></li>
    <li><a href="#9" class="contactRole">Istruttori</a></li>
    <li><a href="#10" class="contactRole">Studio Legale</a></li>
</ul>
</div>

jQuery:

$('#contactAdd').menu({
    content: $('#contactRoles').html(),
    width: 150,
    showSpeed: 300
});

$("a.contactRole").click(function(event){
    event.preventDefault();
    alert("Link " + $(this).attr("href") + " clicked");
});

Где я ошибаюсь?

РЕДАКТИРОВАТЬ : @everybody: Да, сценарий заключен в $ (документ) .ready (...)

Для получения дополнительной информации учтите, что div с классом «hidden» скрыт и может быть просмотрен тольконажмите на другой якорь, как вы можете видеть на этом скриншоте.alt text

Ответы [ 3 ]

4 голосов
/ 10 сентября 2010

РЕДАКТИРОВАТЬ: Исходя из вашего комментария, вы уже обернуты с функцией ready().

Другая возможность состоит в том, что элементы a.contactRole добавляются в DOM после страница загружается.

Если это так, попробуйте следующее:

$(function() {
    $("a.contactRole").live('click', function(event){
        event.preventDefault();
        alert("Link " + $(this).attr("href") + " clicked");
    });
});

Оригинальный ответ:

Должно сработать.Вы удостоверились, что документ загружен до назначения обработчика щелчка?

Если элементы <a> не загружены при попытке назначить обработчик, он не будет работать.

Пример: http://jsfiddle.net/kjSG8/

   // Wrap your code with $(function() {...}) to make sure it doesn't
   //    run until the DOM is fully loaded
$(function() {
    $("a.contactRole").click(function(event){
        event.preventDefault();
        alert("Link " + $(this).attr("href") + " clicked");
    });
});
0 голосов
/ 10 сентября 2010

Убедитесь, что вы создали щелчок, когда DOM готов.Вы также можете просто сказать $(".contactRole").click вместо $("a.contactRole").click

0 голосов
/ 10 сентября 2010

Это похоже на стандартное событие, вы объявляете его в блоке $(document).ready(function() { });?

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