Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает if (https://javascript.ru/forum/jquery/69675-ne-rabotaet-if.html)

cadijob 11.07.2017 13:40

Не работает 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');
        }
    });

рони 11.07.2017 13:58

cadijob,
проверять css('display') надо до анимации или после
e.preventDefault(); тут
$('#block-links').slideToggle(или тут);

laimas 11.07.2017 14:27

Цитата:

Сообщение от cadijob
$('#block-links').css('display') == 'none' )

В JQ можно же проще - if ( $('#block-links').is(':hidden') ) ....

cadijob 11.07.2017 14:45

Цитата:

Сообщение от рони (Сообщение 458174)
cadijob,
проверять css('display') надо до анимации или после
e.preventDefault(); тут
$('#block-links').slideToggle(или тут);

Проверять css('display') нужно после каждого второго вызова функции
('#open-close').click(function(e)

рони 11.07.2017 15:55

cadijob,
:-?

cadijob 11.07.2017 16:08

Что?)

cadijob 11.07.2017 16:23

Цитата:

Сообщение от рони (Сообщение 458179)
cadijob,
:-?

Скорее всего, я не очень хорошо понимаю функции в JQ. Нужно чтобы, когда $('#block-links').is(':hidden'), css был таким - $('.canDisable').css('pointer-events', 'auto');
а когда != hidden то -
$('.canDisable').css('pointer-events', 'none');

рони 11.07.2017 16:43

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();

    });

laimas 11.07.2017 17:22

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

$('.canDisable').css('pointer-events', ['auto', 'none'][+$('#block-links').is('hidden')]);

cadijob 11.07.2017 17:26

Цитата:

Сообщение от рони (Сообщение 458186)
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 принтит... Даже когда скрываю элемент.


Часовой пояс GMT +3, время: 10:48.