Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.07.2010, 17:59
Интересующийся
Отправить личное сообщение для sergeos Посмотреть профиль Найти все сообщения от sergeos
 
Регистрация: 10.02.2009
Сообщений: 20

exec,
заработало!
ничего не понимаю...
вроде всё тоже самое...

спасибо, так оперативно, очень приятно
Ответить с цитированием
  #12 (permalink)  
Старый 14.07.2010, 18:10
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от exec Посмотреть сообщение
e1f, некроссбраузерно.
Я знаю. Но я бы на месте ТС'а сделал подсветку CSS'ом для Оперы/FF/Safari(?), а для IE и Chrome (вроде как он не понимает фокус) сделал на JS.
Кстати, IE8 осилил CSS, но только при переключении мышью -- при скакании TAB'ом скорее всего некорректно ведет себя фокус (вернее, некорректно теряется фокус), поскольку выделение с label не снимается.
Можно посмотреть пример подсветки CSS'ом тут.

Сообщение от sergeos Посмотреть сообщение
в примере e1f, у меня вообще вместо чекбоксов - инпутбоксы,
и тоже не работает подсветка...
Что значит инпутбоксы? Оо
Ответить с цитированием
  #13 (permalink)  
Старый 14.07.2010, 18:22
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Так интересней

<style type="text/css">
	.focus { color: #f00; }
</style>

<p><input id="ch1" type="checkbox" value="1" /> <label for="ch1">One</label></p>
<p><input id="ch2" type="checkbox" value="2" /> <label for="ch2">Two</label></p>
<p><input id="ch3" type="checkbox" value="3" /> <label for="ch3">Three</label></p>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
	if (/*@cc_on!@*/0) {
		document.attachEvent("onactivate", function () {
			if (event.srcElement.type == "checkbox") {
				$('label[for="' + event.srcElement.id + '"]').addClass("focus");
			}
		});
		document.attachEvent("ondeactivate", function () {
			if (event.srcElement.type == "checkbox") {
				$('label[for="' + event.srcElement.id + '"]').removeClass("focus");
			}
		});
	} else {
		document.addEventListener("focus", function (event) {
			if (event.target.type == "checkbox") {
				$('label[for="' + event.target.id + '"]').addClass("focus");
			}
		}, true);
		document.addEventListener("blur", function (event) {
			if (event.target.type == "checkbox") {
    			$('label[for="' + event.target.id + '"]').removeClass("focus");
    		}
		}, true);
	}
</script>



------------
В Chrome и Safari не работает при нажатии мышкой

Последний раз редактировалось Octane, 14.07.2010 в 18:40.
Ответить с цитированием
  #14 (permalink)  
Старый 14.07.2010, 18:56
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

А смешивать навешивание событий pure-JS и поиск с использование jQuery -- это еще интересней
Ответить с цитированием
  #15 (permalink)  
Старый 14.07.2010, 18:58
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Да, ещё можно переписать на чистом JS функцию $(), а из jQuery'-вского оставить только addClass/removeClass, так будет ещё интереснее.
Ответить с цитированием
  #16 (permalink)  
Старый 14.07.2010, 19:01
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Тут дело не в jQuery, мне лень было писать поиск по атрибутам и работу с CSS-классами, в примере показан способ отлова невсплывающих focus и blur, без навешивания обработчиков на каждый элемент.
Ответить с цитированием
  #17 (permalink)  
Старый 14.07.2010, 19:03
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Ну, функция $ и так написана на чистом JS И вообще-то, именно она и не нужна, если все правильно делать. А нужны именно всякие (add|remove|swap|toggle)Class, getParentByClassName и тому подобные действительно полезные вещи.
Ответить с цитированием
  #18 (permalink)  
Старый 14.07.2010, 19:05
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от Octane Посмотреть сообщение
Тут дело не в jQuery, мне лень было писать поиск по атрибутам и работу с CSS-классами, в примере показан способ отлова невсплывающих focus и blur, без навешивания обработчиков на каждый элемент.
Оппа, а true я как-то пропустил, видимо читал по диагонали, сорри. Да, так намного интересней
Ответить с цитированием
  #19 (permalink)  
Старый 14.07.2010, 19:11
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

А live в последнем jQuery похоже тоже самое делает, только для IE события другие использует (focusin/focusout), и в Chrome c Safari тот же эффект, не работает при клике.

<style type="text/css">
	.focus { color: #f00; }
</style>

<p><input id="ch1" type="checkbox" value="1" /> <label for="ch1">One</label></p>
<p><input id="ch2" type="checkbox" value="2" /> <label for="ch2">Two</label></p>
<p><input id="ch3" type="checkbox" value="3" /> <label for="ch3">Three</label></p>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(":checkbox").live("focus", function (event) {
	$('label[for="' + event.target.id + '"]').addClass("focus");
}).live("blur", function (event) {
	$('label[for="' + event.target.id + '"]').removeClass("focus");
});
</script>

Последний раз редактировалось Octane, 14.07.2010 в 19:21.
Ответить с цитированием
  #20 (permalink)  
Старый 15.07.2010, 12:09
Интересующийся
Отправить личное сообщение для sergeos Посмотреть профиль Найти все сообщения от sergeos
 
Регистрация: 10.02.2009
Сообщений: 20

А почему я не могу толком посомтреть код, который выкладывает народ?
Вот у меня какая хрень получается.

Может что-то в брузере надо выставить? IE8.0
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена картинки при перезагрузке + наведении Мария Элементы интерфейса 2 22.08.2009 14:57
Снятие затемнения с экрана при получении ответа от php срипта с помощью setInterval roma86 jQuery 0 16.08.2009 12:39
Событие mouseout при наведении мыши на пункт меню WalterScott Events/DOM/Window 2 12.05.2009 22:05
Вывод данных единожды, при открытии окна? Ggorsh Events/DOM/Window 1 28.04.2009 01:04
Не отрабатывает событие onmouseout при внедрении нового слоя ilshat Элементы интерфейса 3 28.07.2008 06:27