2009-08-07 8 views
1

Скажем, я хочу, чтобы обрабатывать все ссылки на страницах, с помощью специальной функции, так что я:Несвязанность элементов конкретного JQuery

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

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

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

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

Любые предложения?

:: ОБНОВЛЕНИЕ ::

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

+0

я добавил тестовый код на свой пост в качестве демо я делаю почти то же самое, и я не имею проблему. Любой шанс, что вы могли бы разместить некоторый окружающий код, чтобы мы могли попытаться устранить его? –

+0

Рад, что у вас это работает! –

ответ

0

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

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

Edit- Ok Я сделал тестовую страницу

<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> 

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

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

2

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

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

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

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

+0

«Я не хочу специально исключать navbar в первом заявлении» –

+0

Спасибо Скотту, я отредактировал ответ. Хотя он все еще может не работать для него, если id #navbar динамичен, и это звучит так, как будто это может быть. –