Показать сообщение отдельно
  #53 (permalink)  
Старый 19.11.2015, 11:15
Новичок на форуме
Отправить личное сообщение для pitbullalex Посмотреть профиль Найти все сообщения от pitbullalex
 
Регистрация: 11.11.2015
Сообщений: 6

в этой теме был код:
var base = {
    // Поиск элементов по классу
    findClass: function(str, node) {
         if(document.getElementsByClassName) return (node || document).getElementsByClassName(str);
         else {
              var node = node || document, list = node.getElementsByTagName('*'), length = list.length, Class = str.split(/\s+/), classes = Class.length, array = [], i, j, key;
              for(i = 0; i < length; i++) {
                    key = true;
                    for(j = 0; j < classes; j++) if(list[i].className.search('\\b' + Class[j] + '\\b') == -1) key = false;
                    if(key) array.push(list[i]);
              }
              return array;
         }
    },
    // Добавление обработчиков событий
    bind: function(node, type, listener) {
        if(node.addEventListener) node.addEventListener(type, listener, false);
        //@cc_on node.attachEvent('on' + type, function() { listener.call(node); });
    },
    // Реализация DOMContentLoaded
    init: [],
    ready: function() {
        if(!arguments.callee.done) {
            arguments.callee.done = true;
            if(this.timer) clearInterval(this.timer);
            var i, length = this.init.length;
            for(i = 0; i < length; i++) this.init[i]();
            this.init = [];
        }
    },
    check: function() {
        var _this = this, listener = function() {
            _this.ready();
        };
        if(document.addEventListener) document.addEventListener('DOMContentLoaded', listener, false);
        if(/KHTML|WebKit/i.test(navigator.userAgent)) this.timer = setInterval(function() {
            if(/loaded|complete/.test(document.readyState)) base.ready();
        }, 10);
        
        this.bind(window, 'load', listener);
    }
};
 
// Функции для работы с панельками
var toggler = {
    current : null,
    process: function() {
        var i, list = base.findClass('toggler'), length = list.length;
        for(i = 0; i < length; i++) base.bind(list[i], 'click', this.toggle);
        list = base.findClass('content');
        length = list.length;
        for(i = 0; i < length; i++) list[i].style.display = 'none';
    },
    toggle: function() {
        var content = base.findClass('content', this.parentNode)[0], e = arguments[0] || window.event;
        if(toggler.current && toggler.current != content) 
		{toggler.current.style.display = 'none';

	     };
        toggler.current = content;
        if(content.style.display == 'block') {
            content.style.display = 'none';
        }
        else {
            content.style.display = 'block';
        }
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
    }
};
 
// Ищем блоки с классом «toggle» по событию DOMContentLoaded
base.init.push(function() {
    toggler.process();
});
// Запускаем проверку готовности DOM
base.check();


подскажите как изменить эти функции, что бы вызывать не только для классов "'content" и "toggler"
(<a class='toggler' href='#' >$row[15]&nbsp;</a><div id='content'), но и для других классов на этой же странице
(<a class='toggler2' href='#' >$row[15]&nbsp;</a><div id='content2' - например)
, что бы не плодить этих функций (и если не сложно напишите как после этого их вызывать в HTML)
(извините за глупую просьбу, с JS пока не дружу, только учусь)

// Функции для работы с панельками
var toggler = {
    current : null,
    process: function() {
        var i, list = base.findClass('toggler'), length = list.length;
        for(i = 0; i < length; i++) base.bind(list[i], 'click', this.toggle);
        list = base.findClass('content');
        length = list.length;
        for(i = 0; i < length; i++) list[i].style.display = 'none';
    },
    toggle: function() {
        var content = base.findClass('content', this.parentNode)[0], e = arguments[0] || window.event;
        if(toggler.current && toggler.current != content) 
		{toggler.current.style.display = 'none';

	     };
        toggler.current = content;
        if(content.style.display == 'block') {
            content.style.display = 'none';
        }
        else {
            content.style.display = 'block';
        }
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
    }
};

Последний раз редактировалось pitbullalex, 19.11.2015 в 11:30.
Ответить с цитированием