Базовый синтаксис для изменения классов и идентификаторов divs с помощью jquery (с пользовательским кодом)

#javascript #jquery #html #css

#javascript #jquery #HTML #css

Вопрос:

Здравствуйте, у меня есть фрагмент кода, и я не знаю, как изменить идентификаторы и классы div.

HTML

 <div id="menu-wrapper" class="menu-wrapper">

<ul class="nav">
    <a id="home_btn" href="http://www.pixuripersonalizate.net"><img src="/images/home_button.png"></img></a>
    <li class="nav-item nav-item-first">
        <a href="#">Instrumente de scris</a>
        <div>
            <ul class="sub-menu">
                <li><a href="#">Pixuri plastic</a></li>
                <li><a href="#">Pixuri plastic metal</a></li>
                <li><a href="#">Pixuri de lux</a></li>
                <li><a href="#">Pixuri metalice</a></li>
                <li><a href="#">Pixuri din aluminiu</a></li>
                <li><a href="#">Pixuri biodegradabile</a></li>
                <li><a href="#">Pixuri modele speciale</a></li>
                <li><a href="#">Pixuri din bambus</a></li>
                <li><a href="#">Stilouri</a></li>
                <li><a href="#">Pixuri cu gel personalizate</a></li>
                <li><a href="#">Pixuri campanie electorala</a></li>
                <li><a href="#">Pixuri si creioane craciun</a></li>
                <li><a href="#">Evidentiatoare</a></li>
            </ul>
        </div>
    </li>
    <li class="nav-item">
        <a href="#">Truse/Pixuri de lux</a>
        <div>
            <ul class="sub-menu">
                <li><a href="#">Pixuri PARKER</a></li>
                <li><a href="#">Pixuri AlexLuca</a></li>
                <li><a href="#">Pixuri Andre Philippe</a></li>
            </ul>
        </div>
    </li>
    <li class="nav-item">
        <a href="#">Truse seturi de scris</a>
        <div>
            <ul class="sub-menu">
                <li><a href="#">Seturi din lemn</a></li>
                <li><a href="#">Seturi de lux</a></li>
                <li><a href="#">Seturi din plastic</a></li>
            </ul>
        </div>
    </li>
    <li class="nav-item">
        <a href="#">Creioane</a>
        <div>
            <ul class="sub-menu">
                <li><a href="#">Creioane colorate</a></li>
                <li><a href="#">Creioane mecanice</a></li>
                <li><a href="#">Creioane de scris</a></li>
            </ul>
        </div>
    </li>
    <li class="nav-item">
        <a href="#">Accesorii pixuri</a>
        <div>
            <ul class="sub-menu">
                <li><a href="#">Cutii cadou</a></li>
                <li><a href="#">Suporturi pentru pixuri</a></li>
                <li><a href="#">Etuiuri si cutii</a></li>
                <li><a href="#">Ascutitori</a></li>
            </ul>
        </div>
    </li>
</ul>

</div>
<div id="dropdown_submenu" class="submenu_container">
<div class="submenu_blue"></div>
<ul class="submenu">
</ul>
</div>
  

Javascript

 $( document ).ready(function() {

$('.nav-item div').hide();
 $('.nav-item-first div').show();

var all_divs = $('.nav-item a').parent().find('div');

 $('.nav-item a').click(function(e){

 e.preventDefault();
 // hide all divs
 all_divs.hide();
$this = $(this).parent().find('div');
 // here is what I want to do
 if ($this.is(':hidden')) {
 $(this).parent().find('div').show();
}
});
$('.nav-item a').click(function(){
        $(this).parent().attr('class', 'nav-item').addClass('curent-   menu-item').removeClass('nav-item').siblings().removeClass('curent-menu-item').addClass('nav-item');

        if($(this).parent().attr('class', 'instr_scris'))
            {
                $('')
            }
});


});
  

Демонстрация:test.pixuripersonalizate.net

Итак, все, что я хочу сделать, это изменить классы «submenu» на «submenu_long», «submenu_container» на «submenu_container_long» и идентификатор «dropdown_submenu» на «dropdown_submenu_long». когда я нажимаю на «Instrumente de scris» и меняю его обратно на значение по умолчанию, когда я нажимаю на любую из других вкладок.

Заранее благодарю вас.

Комментарии:

1. Просто для простоты кода вам следует отключить .hide() и .show () в начале этого скрипта для отображения свойств CSS: нет / блок, быстрее и означает меньшее использование манипуляций с DOM, которые занимают память.

2. Спасибо за совет. Я новичок в jquery / javascript, поэтому не совсем понимаю это.

Ответ №1:

Предполагая, что «Instrumente de scris» имеет идентификатор, подобный следующему

 <a href="#" id='change'>Instrumente de scris</a>
  

Вы можете сделать что-то вроде

 $('li a').click(function(){
 if($(this).attr('id')=='change')
   change();
 else
   reset();
});

function change(){
 $('.submenu').removeClass('submenu').addClass('submenu_long');
 $('.submenu_container').removeClass('submenu_container').addClass('submenu_container_long');
 $('#dropdown_submenu').attr('id','dropdown_submenu_long');
}

function reset(){
$('.submenu_long').removeClass('submenu_long').addClass('submenu');
 $('.submenu_container_long').removeClass('submenu_container_long').addClass('submenu_container');
 $('#dropdown_submenu_long').attr('id','dropdown_submenu');
}
  

Комментарии:

1. Позвольте мне попробовать это. Если это сработает, я буду любить тебя вечно. 🙂 РЕДАКТИРОВАТЬ: Ты мой новый герой! Также спасибо за простой для понимания код, поэтому мне не придется задавать здесь вопросы такого типа. Слава тебе, мой друг!