Показать сообщение отдельно
  #7 (permalink)  
Старый 22.09.2011, 21:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

выкладываю свою версию для тогглинга классов


// короткое определение IE
var ie = /*@cc_on!@*/0,
    // рега для вырезания классов
    clreg = /\b*!*active*/!*\b\s*/g;


// обработчик клика.
var handler = function(e){
    
    // на что кликнули
    var el = ie ? event.srcElement:e.target,
        // классы у элемента
        cl = el.className;
    
    // если кликнули по параграфу
    el.tagName=="P" &&
        ~cl.indexOf("active") && 
            // если у него нет класса active, то заменяем его пустым местом
            (el.className=cl.replace( clreg, "")) || 
                // иначе - ставим
                (el.className+=" active");
};

// сокращение.
var body = document.body;
// кроссбраузерность.
ie ? body.attachEvent("onclick",handler):body.addEventListener('click',handler,0);


живой пример :
<style>.active { padding : 5px;border: 2px red solid; } </style>
<p>Lorem Ipsum...</p>
<p>Sit Dolor amet...</p>
<script>
var ie = /*@cc_on!@*/0,
    clreg = /\bactive\b\s*/g;

var handler = function(e){
    var el = ie ? event.srcElement:e.target,
        cl = el.className;
    
    el.tagName=="P" &&
        ~cl.indexOf("active") && 
            (el.className=cl.replace( clreg, "")) || 
                (el.className+=" active");
};

var body = document.body;

ie ? body.attachEvent("onclick",handler):body.addEventListener('click',handler,0);
</script>

Последний раз редактировалось melky, 22.09.2011 в 21:10.
Ответить с цитированием