Удалите класс, используя jquery при определенных условиях для правильного выравнивания подменю

0

Мне нужно удалить определенный класс css из .nav, так что он подходит правильно. Сейчас его поведение неожиданно основано на разных размерах экрана.

Пример скрипта

Демо-просмотр

Вы заметите, что раскрывающиеся подменю отображаются неправильно. Я хочу, чтобы раскрывающийся список показывался с правой стороны раскрывающегося списка, когда он имеет достаточное пространство справа и слева от раскрывающегося списка, когда у него меньше места на основе ширины <div class="main-wrapper">, которая ширина 1000px.

Я попытался исправить это с помощью следующего кода, но он не работает должным образом:

$(document).ready(function(){
    $(".nav").on("mouseenter", " > li", function(){

        /*if dropdown is likely to go out of parent nav then right align it :) */
        if (($(this).offset().left) + 200 > $('.menu-wrapper').width()) {
            $(this).find(".dropdown").addClass("dropdown-last");
        }
        if($(this).hasClass("has-panel")){
           // $(this).find(".dropdown").removeClass("dropdown-last");
            //alert('has class');
        }
        else
        {
        //alert('has no class');
        }
    });

    /* if dropdnw*/
    $(".dropdown").each(function(){
        var $this = $(this);
        if($this.find(".dd-panel").length > 0){
            $this.addClass('has-panel');

        }


        if($this.find(".dd-panel").length = 1){
           $(".dropdown").css( "min-height", "80px" );
        }
    });
});

При отладке он показывает следующее: dropdown has-panel dropdown-last список dropdown has-panel dropdown-last div dropdown has-panel dropdown-last если он имеет div с классом has-panel и тот, у которого нет мега-меню для него, показывается класс в качестве dropdown dropdown-last. Я пытался проверить с помощью jQuery, чтобы увидеть, есть ли у элемента класс или нет. Если у него есть has-panel с классом, то ничего не делать и если у нее нет has-panel с классом, тогда мне нужно удалить dropdown-last список класса dropdown-last из того же элемента, который не работает со следующим кодом:

if($(this).hasClass("has-panel")){
   // $(this).find(".dropdown").removeClass("dropdown-last");
    alert('has class');
}
else
{
//alert('has no class');
}
  • 0
    почему вы используете window.load и document.ready? вам нужно понять разницу. См .: stackoverflow.com/questions/8562609/… использование document.ready после window.load не будет работать, так как window.load запускается после document.ready
  • 0
    Мне это не нужно на самом деле ...
Показать ещё 1 комментарий

2 ответа

0

Решено использовать код

    if( $(this).find(".dropdown").hasClass("has-panel")){
       // $(this).find(".dropdown").removeClass("dropdown-last");
        //alert('has class');
    }
    else
    {
    //alert('has no class');
     $(this).find(".dropdown").removeClass("dropdown-last");
    }
0

удалите $(window).load(function(){} и он будет работать

  • 0
    Я удаляю window.load не работает ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню