Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   не назначается bind после unbind (https://javascript.ru/forum/jquery/5088-ne-naznachaetsya-bind-posle-unbind.html)

constantant 14.09.2009 12:50

не назначается bind после unbind
 
В общем смысл скрипта такой: имеется див с классом .unlock при клике на него отменяются обработчики события для определённых классов, а сам элемент меняет класс на .lock. А клике снова на тот же элемент но с классом .lock - назначаются обработчики тем элементам с которых они были сняты.
делаю я это следующим образом (может не правильно):
function add_events(){
	$('.e').bind('click',ex)
	$('.ifp').bind('mouseover',movf)
	$('.ifp').bind('mouseout',motf)
	$('.ifp').bind('mouseup',muf)
	$('.om:has(~.ulc)').bind('mouseover',movo)
	$('.om:has(~.ulc)').bind('mouseout',moto)
	$('.om:has(~.ulc)').bind('mousedown',mdno)
	$('.om:has(~.ulc)').bind('mouseup',muo)
	$('.no:has(~.ulc)').bind('click',act)
	$('.hd:has(~.ulc)').bind('click',hd)
	$('.uhd:has(~.ulc)').bind('click',hd)
	$('.ulc').click(function(){
		$(this).toggleClass('ulc').toggleClass('lc')
		$('.om:has(~.lc)').unbind('mouseover',movo)
		$('.om:has(~.lc)').unbind('mouseout',moto)
		$('.om:has(~.lc)').unbind('mousedown',mdno)
		$('.om:has(~.lc)').unbind('mouseup',muo)
		$('.no:has(~.lc)').unbind('click',act)
		$('.hd:has(~.lc)').unbind('click',hd)
		$('.uhd:has(~.lc)').unbind('click',hd)
		})
	$('.lc').click(function(){
		$(this).toggleClass('ulc').toggleClass('lc')
		$('.om:has(~.ulc)').bind('mouseover',movo)
		$('.om:has(~.ulc)').bind('mouseout',moto)
		$('.om:has(~.ulc)').bind('mousedown',mdno)
		$('.om:has(~.ulc)').bind('mouseup',muo)
		$('.no:has(~.ulc)').bind('click',act)
		$('.hd:has(~.ulc)').bind('click',hd)
		$('.uhd:has(~.ulc)').bind('click',hd)
		})
	}

так вот unbind работает, а bind - нет :(

Octane 14.09.2009 13:13

Что за тильда перед классом ucl? Код ужасный, читайте доки по jQuery.

constantant 14.09.2009 13:17

Цитата:

Сообщение от Octane
Что за тильда перед классом ucl?

в общем .om:has(~.ulc) означает: элемент с классом .om имеющий брата с классом .ulc
разве не так надо? если нет, то как?

constantant 14.09.2009 14:02

проблему решил)

e1f 14.09.2009 18:42

Цитата:

Сообщение от constantant (Сообщение 30117)
в общем .om:has(~.ulc) означает: элемент с классом .om имеющий брата с классом .ulc
разве не так надо? если нет, то как?

Не так. '.om ~ .ulc' -- так

constantant 15.09.2009 08:02

Цитата:

Сообщение от e1f
Не так. '.om ~ .ulc' -- так

из описания:
Цитата:

siblings(prev, siblings)
Matches all sibling elements after the "prev" element that match the filtering "siblings" selector.
а у меня .ulc стоит после .om, так что конструкция '.om ~ .ulc' не работает, а моя работает :)

e1f 15.09.2009 13:21

Ага. Да, тогда так работает. Правда, хорошо бы потестить производительнось Sizzle на таких специфических селекторах.

constantant 15.09.2009 13:59

Цитата:

Сообщение от e1f
хорошо бы потестить производительнось Sizzle на таких специфических селекторах

лучше задать это вопрос непосредственно в jQuery или Sizzle :)


Часовой пояс GMT +3, время: 02:41.