exec,
заработало! ничего не понимаю... вроде всё тоже самое... спасибо, так оперативно, очень приятно |
Цитата:
Кстати, IE8 осилил CSS, но только при переключении мышью -- при скакании TAB'ом скорее всего некорректно ведет себя фокус (вернее, некорректно теряется фокус), поскольку выделение с label не снимается. Можно посмотреть пример подсветки CSS'ом тут. Цитата:
|
Так интересней ;)
<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 не работает при нажатии мышкой :( |
А смешивать навешивание событий pure-JS и поиск с использование jQuery -- это еще интересней :)
|
Да, ещё можно переписать на чистом JS функцию $(), а из jQuery'-вского оставить только addClass/removeClass, так будет ещё интереснее.
|
Тут дело не в jQuery, мне лень было писать поиск по атрибутам и работу с CSS-классами, в примере показан способ отлова невсплывающих focus и blur, без навешивания обработчиков на каждый элемент.
|
Ну, функция $ и так написана на чистом JS :) И вообще-то, именно она и не нужна, если все правильно делать. А нужны именно всякие (add|remove|swap|toggle)Class, getParentByClassName и тому подобные действительно полезные вещи.
|
Цитата:
|
А 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> |
|
Часовой пояс GMT +3, время: 03:34. |