2017-01-25 3 views
0

im пытается создать раскрывающееся меню, которое отображается, когда пользователь нажимает на него, и закрывает, нажимает ли пользователь на него снова или щелкает за пределами меню. Теперь у меня есть рабочий сценарий благодаря этому сообществу: http://jsfiddle.net/aL7Xe/1000/Выпадающее меню скрыто в Drupal 8 не работает

Но при использовании этого на моем сайте drupal 8 это не сработает, никаких идей?

JQuery им с помощью:

jQuery(document).ready(function() { 
    $('.topmenu').click(function(e){ 
    e.stopPropagation(); 
     $(this).find('.dropdown-menu').toggleClass('hide'); 
    }); 
    $('html').on('click', function(){ 
     $('.dropdown-menu').addClass('hide'); 
    }); 
}); 

Заранее спасибо

РЕШЕННОГО:

я решил уже, получается, когда я смотрел на функции отладки в светлячок @ консоли он сказал ошибка $ не является функцией. Затем я добавил $ на первой строке, так что стало так: jQuery(document).ready(function($) { И ошибка исчезла, и это сработало.

ответ

0

Blomkfist174,

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

(function (Drupal, $, window) { 

    // To understand behaviors, see https://www.drupal.org/node/2269515 
    Drupal.behaviors.themename = { 
    attach: function (context, settings) { 

     // Execute code once the DOM is ready. $(document).ready() not required within Drupal.behaviors. 

     //Code in your example would go here: 
     //---------------------------------------------- 
     $('.topmenu').click(function(e){ 
     e.stopPropagation(); 
     $(this).find('.dropdown-menu').toggleClass('hide'); 
     }); 
     $('html').on('click', function(){ 
     $('.dropdown-menu').addClass('hide'); 
     }); 
     //---------------------------------------------- 


     $(window).load(function() { 
     // Execute code once the window is fully loaded. 


     }); 

     $(window).scroll(function() { 
     // Execute code when the window scrolls. 


     }); 
    } 
    }; 
} (Drupal, jQuery, this)); 

Coding JS вашей темы в этом пути позволит вам взаимодействовать с другими библиотеками Drupal. Например, вы можете запустить JS после запуска Ajax. Вам нужно будет изменить код ниже, чтобы соответствовать вашему названию темы на этой линии:

Drupal.behaviors.themename = { 

Я создал тему от основной темы. Этот JS-файл был предоставлен в качестве отправной точки. Я также использую gulp, чтобы взять мои исходные JS-файлы и uglify/minify их. Принимая этот подход, я могу иметь исходный файл с красивым форматированием и комментариями, но файл min, который используется на сайте.

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

Смежные вопросы