Вопрос

Допустим, я хочу обрабатывать все ссылки на странице с помощью специальной функции, поэтому я делаю:

$('a').bind("click", handleLinks);

Но у меня есть панель навигации со ссылками, которые я хочу обработать по-другому.Поэтому я хочу сделать это, но это не работает:

$('#navbar a').unbind("click", handleLinks);

Я не хочу специально исключать панель навигации в первом операторе, потому что содержимое загружается динамически, поэтому элементы, которые мне нужно отслеживать на предмет кликов, будут меняться в зависимости от содержимого.По сути, я хочу иметь возможность динамически отсоединять определенные подмножества элементов от большего начального подмножества элементов, которое было привязано изначально.

Есть какие-нибудь предложения?

::Обновить ::

Мои искренние извинения, вы все правы - было что-то странное в порядке вызова команд.Извините!

Это было полезно?

Решение

Странно - это выглядит правильно.Проверяли ли вы, что ваше первоначальное утверждение выбирает то, что, по вашему мнению, оно делает?

http://docs.jquery.com/Events/unbind

Редактировать- Хорошо, я сделал тестовую страницу

<body>
        <a href="#" class="a">Test A</a>
        <a href="#" class="a">Test A</a>
        <a href="#" class="a">Test A</a>
        <a href="#" class="b">Test B</a>
        <a href="#" class="a">Test A</a>
        <a href="#" class="b">Test B</a>


        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
        <script type="text/javascript">

                $(function(){

                    $('a').bind("click", testClick);
                    $('a.b').unbind("click", testClick);


                });

                function testClick(){
                    alert("Link Clicked");
                };
    </script>
    </body>

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

Не могли бы вы опубликовать немного больше кода> похоже, что может быть что-то еще не так.

Другие советы

Я согласен с apocalypse9 в том, что, похоже, то, что у вас есть, должно сработать.Возможно, другой подход дал бы лучшие результаты...Как насчет использования селектора :not с live().Live гарантирует, что селектор работает с динамически добавляемыми элементами.

$('a:not(#navbar a)').live("click", handleLinks);

http://docs.jquery.com/Selectors/not#selector

http://docs.jquery.com/Events/live

$('a').not('#navbar a').bind('click', handleLinks);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top