Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 07.06.2018, 14:46
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Я имею в виду, чтобы на их невозможно было нажать курсором. Думаю, что лучше к ним добавить css класс, чтобы управлять цветом.
Ответить с цитированием
  #12 (permalink)  
Старый 07.06.2018, 15:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Янковиц
Я имею в виду, чтобы на их невозможно было нажать курсором.
добавил
Ответить с цитированием
  #13 (permalink)  
Старый 07.06.2018, 15:30
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Спасибо, и все же, как с добавлением-удалением классов сделать неактивность?
Ответить с цитированием
  #14 (permalink)  
Старый 07.06.2018, 16:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Янковиц,

<!DOCTYPE html>

<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    .act, .act a{
            background-color: rgba(0, 0, 255, 1);
            color: rgba(255, 255, 255, 1);
    }
    .ex-ex .act, .ex-ex .act a{
            background-color: rgba(255, 250, 205, 1);
            color: rgba(139, 69, 19, 1);
    }
    .noclick{
            pointer-events: none;
            opacity: .4;
    }

    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
$(function() {
        var parent = $(".ex-type li"),
                child = $(".ex-ex li");
        parent.on("click", function(event) {
                event.preventDefault();
                var el = $(this);
                parent.not(el.toggleClass("act")).removeClass("act noclick");
                var id = el.data("id") + "";
                child.removeClass("act");
                if (el.is(".act")) {
                child.filter(function() {
                        var data = $(this).data("parent");
                        data = (data + "").split(/\s*,\s*/);
                        return data.indexOf(id) !== -1
                }).addClass("act");
                parent.not(el).addClass("noclick");
                }
        }).filter(".act").removeClass("act").click();
        child.on("click", function(event) {
                event.preventDefault();
                var el = $(this);
                child.not(el.toggleClass("act")).removeClass("act noclick");
                var data = $(this).data("parent");
                data = (data + "").split(/\s*,\s*/);
                parent.removeClass("act");
                if (el.is(".act")) {
                parent.filter(function() {
                        var id = $(this).data("id") + "";
                        return data.indexOf(id) !== -1
                }).addClass("act");
                child.not(el).addClass("noclick");
                }
        })
});
    </script>
</head>

<body>
<div id="ex-filter">
    <div class="ex-type">
        <ul>
            <li class="col-md-6 act" data-id="1" data-children="11, 12, 13"><a href="#">Актив</a> (4)</li>
            <li class="col-md-6" data-id="2" data-children="12, 14"><a href="#">Пассив</a> (2)</li>
        </ul>
    </div>
    <div class="ex-ex">
        <ul>
            <li class="col-md-6" data-id="11" data-parent="1"><a href="#">Горы</a> (4)</li>
            <li class="col-md-6" data-id="12" data-parent="2"><a href="#">Лес</a> (2)</li>
            <li class="col-md-6" data-id="13" data-parent="2"><a href="#">Пляж</a> (2)</li>
            <li class="col-md-6" data-id="14" data-parent="1, 2"><a href="#">Море</a> (2)</li>
        </ul>
    </div>
    <button class="ex-go">Фильтровать</button>
</div>


</body>
</html>

Последний раз редактировалось рони, 14.06.2018 в 12:06.
Ответить с цитированием
  #15 (permalink)  
Старый 14.06.2018, 10:48
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Спасибо большое. Прошу прощения, что снова поднимаю свой вопрос.
Необходимо при загрузки вебстраницы запускать скрипт и проверять, есть ли активные элементы. Делаю так:
$(function() {
    var parent = $(".ex-type li"),
        child = $(".ex-ex li");
    function parent_filter( parent ) {
        event.preventDefault();
        var el = $(this);
        parent.not(el.toggleClass("act")).removeClass("act noclick");
        var id = el.data("id") + "";
        child.removeClass("act");
        if (el.is(".act")) {
        child.filter(function() {
            var data = $(this).data("parent");
            data = (data + "").split(/\s*,\s*/);
            return data.indexOf(id) !== -1
        }).addClass("act");
        parent.not(el).addClass("noclick");
        }
    }
    function children_filter( child ) {
        event.preventDefault();
        var el = $(this);
        child.not(el.toggleClass("act")).removeClass("act noclick");
        var data = $(this).data("parent");
        data = (data + "").split(/\s*,\s*/);
        parent.removeClass("act");
        if (el.is(".act")) {
        parent.filter(function() {
            var id = $(this).data("id") + "";
            return data.indexOf(id) !== -1
        }).addClass("act");
        child.not(el).addClass("noclick");
        }
    }
    parent.on("click", function(event) {
        var _this = jQuery(this);
        parent_filter(_this);
    })
    child.on("click", function(event) {
        var _this = jQuery(this);
        children_filter(_this);
    })
});

Однако, фильтр перестает работать. Подскажите, что я делаю не так? Проверял в console.log Почему-то, _this возвращает не DOM элемент.
Ответить с цитированием
  #16 (permalink)  
Старый 14.06.2018, 10:49
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Соответственно
jQuery(window).on('load', function() { 
	parent_filter();
	children_filter();
});

Тоже не работает
Ответить с цитированием
  #17 (permalink)  
Старый 14.06.2018, 11:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Янковиц,
что такое "активный элемент" и что нужно сделать, если есть "активный элемент"?
Ответить с цитированием
  #18 (permalink)  
Старый 14.06.2018, 11:59
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Активный элемент, это элемент в котором есть класс act
Ответить с цитированием
  #19 (permalink)  
Старый 14.06.2018, 12:02
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Ранее, в предыдущем коде была выполнена фильтрация при клике по элементам. Теперь к этому нужно еще добавить: если пользователь переходит сразу на страницу, где уже есть "активный элемент" с классом act, необходимо, чтобы скрипт, без кликанья автоматически выполнялся.
Ответить с цитированием
  #20 (permalink)  
Старый 14.06.2018, 12:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Янковиц
где уже есть "активный элемент" с классом act, необходимо, чтобы скрипт, без кликанья автоматически выполнялся.
добавлено
пост №14 строка 41
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать динамичное добавление тегов modelfak23 jQuery 1 19.06.2015 14:27
Как правильно реализовать такой функционал? Julian Общие вопросы Javascript 3 16.01.2015 12:34
Как правильно реализовать наследование? Universe Общие вопросы Javascript 9 10.04.2014 16:05
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как реализовать вывод такого окна nastya Events/DOM/Window 4 04.02.2010 05:41