Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.07.2017, 13:40
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Не работает if
Привет.
Проблема в том, что нужно проверить свойство display у элемента. Но if не работает, точнее "chek1" не принтется, хотя если посмотреть код страницы, то - id="block-links" style="display: none;".
Вот код -
$('#open-close').show();
    $('#block-links').hide();
 
    $('#open-close').click(function(e) {
        e.preventDefault();
        $('#block-links').slideToggle();
        $('.canDisable').css('pointer-events', 'none');
        hideChek();
    });
 
    function hideChek(){
        console.log("chek");
        if ( $('#block-links').css('display') == 'none' ){
            console.log("chek1");
            $('.canDisable').css('pointer-events', 'auto');
        }
    }

Вот так при загрузке документа chek1 принтется, но функцию вызвать не получается. Как вызвать подобную функцию?
$("#block-links").each(function hideChek(){
        console.log("chek");
        if ( $(this).css('display') == 'none' ){
            console.log("chek1");
            $('.canDisable').css('pointer-events', 'auto');
        }
    });
Ответить с цитированием
  #2 (permalink)  
Старый 11.07.2017, 13:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

cadijob,
проверять css('display') надо до анимации или после
e.preventDefault(); тут
$('#block-links').slideToggle(или тут);
Ответить с цитированием
  #3 (permalink)  
Старый 11.07.2017, 14:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от cadijob
$('#block-links').css('display') == 'none' )
В JQ можно же проще - if ( $('#block-links').is(':hidden') ) ....
Ответить с цитированием
  #4 (permalink)  
Старый 11.07.2017, 14:45
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Сообщение от рони Посмотреть сообщение
cadijob,
проверять css('display') надо до анимации или после
e.preventDefault(); тут
$('#block-links').slideToggle(или тут);
Проверять css('display') нужно после каждого второго вызова функции
('#open-close').click(function(e)
Ответить с цитированием
  #5 (permalink)  
Старый 11.07.2017, 15:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

cadijob,
Ответить с цитированием
  #6 (permalink)  
Старый 11.07.2017, 16:08
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Что?)
Ответить с цитированием
  #7 (permalink)  
Старый 11.07.2017, 16:23
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Сообщение от рони Посмотреть сообщение
cadijob,
Скорее всего, я не очень хорошо понимаю функции в JQ. Нужно чтобы, когда $('#block-links').is(':hidden'), css был таким - $('.canDisable').css('pointer-events', 'auto');
а когда != hidden то -
$('.canDisable').css('pointer-events', 'none');
Ответить с цитированием
  #8 (permalink)  
Старый 11.07.2017, 16:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

cadijob,
$('#open-close').click(function(e) {
        e.preventDefault();
        if ( $('#block-links').is('hidden') ){

            $('.canDisable').css('pointer-events', 'auto');
        }
        else $('.canDisable').css('pointer-events', 'none');
        $('#block-links').slideToggle();

    });
Ответить с цитированием
  #9 (permalink)  
Старый 11.07.2017, 17:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

cadijob,
это можно записать и без if ... else:

$('.canDisable').css('pointer-events', ['auto', 'none'][+$('#block-links').is('hidden')]);
Ответить с цитированием
  #10 (permalink)  
Старый 11.07.2017, 17:26
Аспирант
Отправить личное сообщение для cadijob Посмотреть профиль Найти все сообщения от cadijob
 
Регистрация: 11.07.2017
Сообщений: 38

Сообщение от рони Посмотреть сообщение
cadijob,
$('#open-close').click(function(e) {
        e.preventDefault();
        if ( $('#block-links').is('hidden') ){

            $('.canDisable').css('pointer-events', 'auto');
        }
        else $('.canDisable').css('pointer-events', 'none');
        $('#block-links').slideToggle();

    });
Блин. Всё равно не работает
$('#open-close').click(function(e) {
        e.preventDefault();
        if ( $('#block-links').is('hidden') ){
            console.log("auto");
            $('.canDisable').css('pointer-events', 'auto');
        }
        else {
            $('.canDisable').css('pointer-events', 'none');
            console.log("none");
        }
        $('#block-links').slideToggle();
    });

Только none принтит... Даже когда скрываю элемент.

Последний раз редактировалось cadijob, 11.07.2017 в 17:34.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS: работает на сервере, не работает из папки -majestic- Общие вопросы Javascript 2 02.08.2012 14:41
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11