используйте оператор if, чтобы проверить, отображается ли элемент: block jquery - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь проверить, является ли элемент отображаемым блоком, и если это так, то я хочу выполнить некоторый код. Ниже приведен мой код, это большая функция, но там, где я пытаюсь проверить, является ли div отображаемым блоком снизу, и если это отображаемый блок, то я хочу выполнить метод размытия. Как вы можете видеть в нижней части, я начал писать if ($suggestionsWrapper ===, и я намеревался написать, если оболочка предложений не отображает ничего, тогда сделайте это. Я просто не могу понять, как выполнить это, то, что я написал, не работает. Также я новичок во всем этом, так что извините, если это действительно грязно или не имеет смысла, все еще очень много учусь.

 //Header Search Handler
    function headerSearchHandler(){
        var $searchInput = $(".header-search input[type=text]"),
            $searchSubmit = $(".header-search input[type=submit]"),
            $mobSearchBtn = $(".mobile-search-btn"),
            $myAccountText = $(".menu-utility-user .account-text"),
            $miniCart = $("#header #mini-cart"),
            $searchForm = $(".header-search form"),
            $headerPromo = $(".header-promo-area");
            $suggestionsWrapper = $('#suggestions-wrapper');

//        
        $mobSearchBtn.on("click touchend", function(e) {

            $(this).hide();
            //$myAccountText.hide();
            $searchInput.show();
            $searchInput.addClass('grey-line');
            $searchSubmit.show();
            $miniCart.addClass("search-open");
            $searchForm.addClass("search-open");
            setTimeout(function() {
                $searchInput.addClass("active").focus();
            }, 100);
            e.stopPropogation();

        });

        $searchInput.on("click touchend", function(e) {
             $searchInput.addClass('grey-line');
             e.stopPropogation();

        }).blur(function(e) {
            var $this = $(this);

            if($this.hasClass("active")){
                $this.removeClass("active");
                $searchSubmit.hide();
                $mobSearchBtn.show();
                $miniCart.removeClass("search-open");
                $searchForm.removeClass("search-open");
            }
        });
        $searchInput.focus(function(e){
            $(this).css('width', '145px');
        })
       if ($suggestionsWrapper.css('display') == 'none') {
        $searchInput.blur(function(e){
            $(this).removeClass('grey-line');
            $(this).css('width', '145px');  
        }
    })
    }//End Header Search Handler

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Вы можете создать вспомогательный метод для проверки, является ли отображение блоком:

function checkDisplay(element) {
  return $(element).css('display') == 'block';
} 

Тогда вы можете проверить это как:

 if(checkDisplay("#myElement")){
   console.log("Display is Block")
 }
 else {
   console.log("Display is NOT Block")
 }

вот пример: https://jsfiddle.net/fafgqv7v/

0 голосов
/ 07 мая 2018

Вы можете сделать что-то вроде этого, я думаю:

if ($suggestionsWrapper.css('display') == 'block')
{
   // true
} else {
   // false
}

Исходя из вашего кода, я думаю, что вы ошиблись }), оно должно быть:

if ($suggestionsWrapper.css('display') == 'none') {
        $searchInput.blur(function(e){
            $(this).removeClass('grey-line');
            $(this).css('width', '145px');  
        })
}

Iнадеюсь, это поможет!

...