SlideToggle в wordpress - одновременно открывается только один?

Я очень надеюсь, что кто-то может помочь! Я нашел множество сообщений на slideToggle и о том, как отображать только один div за раз, но я не знаю, как реализовать это в этом меню в купленной теме WordPress. Вот тема: http://themes.themegoods.com/rhea_wp (я взломал меню так что это не вызывает раздражающего затухания (и музыки). Но посмотрите, как все меню остаются открытыми, когда вы нажимаете на них? Ниже приведен код для меню. Можно ли отредактировать этот код, чтобы он отображал только одно подменю за раз? Я бы хотел, чтобы другие закрывались, когда вы нажимаете на другую основную ссылку. Может быть, мне не нужно использовать slideToggle? Возможно, slideUp и slideDown? Или что-то еще? Я новичок и мне действительно нужно это исправить скоро для клиента!Я ценю любую помощь!

$j.fn.setNav = function(){
$j('#main_menu li ul').css({display: 'none'});

$j( 'ul#main_menu > li:has( ul li.current-menu-item )' ).each(function()
{   
    $j(this).find('ul.sub-menu').css({overflow:'visible', height:'auto', display:  'block'});
});

$j('ul#main_menu > li:has( ul.sub-menu )').click(function()
{

    var $jsublist = jQuery(this).find('ul:first');
    $jsublist.slideToggle('fast');

    return false;
});

$j('ul#main_menu > li > ul.sub-menu li ').click(function()
{
    var subURL = $j(this).find('a:first').attr('href');
    location.href=subURL;
    return true;
}); }

person Lindsay    schedule 04.06.2012    source источник


Ответы (3)


попробуйте .live или .on

http://api.jquery.com/live/

http://api.jquery.com/on/

person zod    schedule 04.06.2012
comment
Я проверил их, но я не уверен, что с ними делать, что отличается от того, что может сделать slideToggle? Я чувствую, что, может быть, мне нужно использовать slideUp и slideDown? Я нашел базовый пример, который сделал то, что мне нужно было сделать на этом форуме, но я не был уверен, как применить его к моему меню в частности. Вот решение, которое, я думаю, могло бы сработать, если бы я знал, как реализовать его в своем коде: вместо всех-независимо" title="jquery слайд-переключение по одному div за раз, а не все независимо"> stackoverflow.com/questions/5827451/ - person Lindsay; 05.06.2012

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

Это сказало как быстрый взлом, изменяющий эту строку:

$jsublist.slideToggle('fast');

Для этого может работать:

$('ul.sub-menu').slideDown('fast');
$jsublist.slideToggle('fast');
person addedlovely    schedule 05.06.2012
comment
Спасибо. Я попробую это прямо сейчас. Что касается взлома темы, то я знаю достаточно, чтобы удалить музыку и убрать размытие ссылок. Я довольно хорошо разбираюсь в CSS и HTML. Это изменение jQuery, где для меня все становится липким, так как у меня нет глубоких знаний javascript. - person Lindsay; 06.06.2012
comment
Упс. Я нажал Enter до того, как закончил. Я хотел добавить, что у меня есть партнер, который может помочь мне с такими модификациями, но, к сожалению, он в отпуске. Во всяком случае, я только что попробовал это, и, к сожалению, это не сработало. Теперь выпадающие списки вообще не отображаются. :/ Я очень ценю вашу помощь. Я продолжу поиск... - person Lindsay; 06.06.2012
comment
@Lindsay Можете ли вы опубликовать ссылку на сайт, и я посмотрю, смогу ли я заставить его работать. - person addedlovely; 06.06.2012
comment
Я очень ценю, что вы заглянули. Я все еще разрабатываю на своем локальном компьютере, но если вы посмотрите на эту демонстрацию, я ничего не трогал в меню, кроме удаления стилей размытия, поэтому эта ссылка покажет вам точный код, который у меня есть. themes.themegoods.com/rhea_wp Когда вы переходите на одну из страниц, я хочу, чтобы это подменю оставаться открытым, когда вы находитесь на текущей странице. Я просто не хочу, чтобы все меню раскрывались, не закрывая остальные. Как вы думаете, это сработает? - person Lindsay; 06.06.2012

Решено. Проблема заключалась просто в том, что тема использовала старую версию jQuery — 1.3.2, если быть точным. После того, как я назвал самую новую версию, меню работало с этой модификацией:

$j('ul#main_menu > li:has( ul.sub-menu )').click(function () {
var $jsublist = jQuery(this).find('ul:first');
    $('.visible').slideUp('fast')
    $jsublist.slideToggle('fast').addClass('visible');
return false;
person Lindsay    schedule 06.06.2012