Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.12.2014, 12:07
Аспирант
Отправить личное сообщение для andreyua Посмотреть профиль Найти все сообщения от andreyua
 
Регистрация: 18.10.2009
Сообщений: 42

Переписать код без использования jquery
function toggleInherited(linkObj, expand) {
    var base = linkObj.getAttribute("id");
    var list = document.getElementById(base + "-list");
    var summary = document.getElementById(base + "-summary");
    var trigger = document.getElementById(base + "-trigger");
    var a = $(linkObj);
    if ( (expand == null && a.hasClass("closed")) || expand ) {
        list.style.display = "none";
        summary.style.display = "block";
        trigger.src = toRoot + "assets/images/triangle-opened.png";
        a.removeClass("closed");
        a.addClass("opened");
    } else if ( (expand == null && a.hasClass("opened")) || (expand == false) ) {
        list.style.display = "block";
        summary.style.display = "none";
        trigger.src = toRoot + "assets/images/triangle-closed.png";
        a.removeClass("opened");
        a.addClass("closed");
    }
    return false;
}


Помогите переписать код без использования jquery, кто может...
Очень нужно...
Ответить с цитированием
  #2 (permalink)  
Старый 17.12.2014, 13:22
Интересующийся
Посмотреть профиль Найти все сообщения от moskitos80
 
Регистрация: 11.08.2013
Сообщений: 28

Ну, без jQ вот как вариант:

function addClass (element, className) {
    if (hasClass(element, className)) {
        return;
    }
    element.className = element.className.length > 0 ?
        element.className + " " + className : 
        className;
}
function removeClass (element, className) {
    var pattern = new RegExp("\\s?" + className);
    element.className = element.className.replace(pattern, "");
}
function hasClass(element, className) {
    return element.className.indexOf(className) !== -1;
}

function toggleInherited(linkObj, expand) {
    var base = linkObj.id,
        list = document.getElementById(base + "-list"),
        summary = document.getElementById(base + "-summary"),
        trigger = document.getElementById(base + "-trigger"),
        doHasClassClosed = hasClass(linkObj, "closed"),
        doHasClassOpened = hasClass(linkObj, "opened");
    
    if ( (expand == null && doHasClassClosed) || expand ) {
        list.style.display = "none";
        summary.style.display = "block";
        trigger.src = toRoot + "assets/images/triangle-opened.png";
        removeClass(linkObj, "closed");
        addClass(linkObj, "opened");
    } else if ( (expand == null && doHasClassOpened) || (expand == false) ) {
        list.style.display = "block";
        summary.style.display = "none";
        trigger.src = toRoot + "assets/images/triangle-closed.png";        
        removeClass(linkObj, "opened");
        addClass(linkObj, "closed");
    }
    return false;
}
Ответить с цитированием
  #3 (permalink)  
Старый 17.12.2014, 13:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от andreyua
var base = linkObj.getAttribute("id");
Ну просто linkObj.id же, не?
a.classList.add/remove/contains вместо add/remove/hasClass
Но это не будет работать в старых браузерах. Для них подключи костыль classList.js (легко гуглится).
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 17.12.2014, 13:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от andreyua
trigger.src = toRoot + "assets/images/triangle-opened.png";
Это в css перенести, в качестве фонового изображения.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 17.12.2014, 16:56
Аспирант
Отправить личное сообщение для andreyua Посмотреть профиль Найти все сообщения от andreyua
 
Регистрация: 18.10.2009
Сообщений: 42

Большое спасибо, работает
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический подсчет в таблице muraig jQuery 5 11.10.2014 16:54
эмуляция события resize для элемента без использования фрейма (scroll-based?) danik.js Events/DOM/Window 1 08.04.2013 13:58
Вычесть один массив из другого без использования цикла Casufi Общие вопросы Javascript 1 16.01.2013 20:21
На много ли код jQuery медленнее чистого javascript format1981 jQuery 8 06.11.2009 10:42
как сделать аналог jquery.load без jquery? vvsh AJAX и COMET 5 05.06.2009 22:40