2012-02-21 2 views
1

Я пытаюсь сделать переключатель, который переключается между двумя классами при нажатии на объект с помощью функции openclose (j) ". Я попытался сделать скрипт только removeClass («стрелка вниз»), который отлично работает, но он не добавит class («стрелка вверх»). Это действительно раздражает, чтобы иметь дело с :)Функция Toggle Javascript

function openclose(j){ 
     if(jQuery('#div_'+j).hasClass("arrow-down")) { 
      jQuery('#div_'+j).removeClass("arrow-down").addClass("arrow-up"); 
     } 
     if (jQuery('#div_'+j).hasClass("arrow-up")) { 
      jQuery('#div_'+j).removeClass("arrow-up").addClass("arrow-down"); 
     } 

     jQuery('#collaps_'+j).toggle(
      function() { 

      } 
     ); 
    } 

Любая помощь очень ценится,

С уважением, Матиас

+0

В качестве примечания, вы должны смотреть в использовании [toggleClass] (http://api.jquery.com/toggleClass/) :) – soniiic

ответ

3

Используйте еще, если заявление ...

function openclose(j){ 
    if(jQuery('#div_'+j).hasClass("arrow-down")) { 
     jQuery('#div_'+j).removeClass("arrow-down").addClass("arrow-up"); 
    } 
    else if (jQuery('#div_'+j).hasClass("arrow-up")) { 
     jQuery('#div_'+j).removeClass("arrow-up").addClass("arrow-down"); 
    } 

    jQuery('#collaps_'+j).toggle(
     function() { 

     } 
    ); 
} 

Проблема в том, что вы удаляете класс «стрелка вверх» сразу после его добавления!

В качестве альтернативы вы можете рассмотреть возможность использования функции JQuery toggleClass.

+0

jQuery имеет функцию 'toggleClass()'. –

1

Почему бы не использовать .toggleClass()?

jQuery('#div_'+j).toggleClass("arrow-down").toggleClass("arrow-up"); 
6

Вы можете использовать toggleClass(), который делает то, что вам требуется:

function openclose(j){ 
    jQuery('#div_'+j).toggleClass("arrow-down").toggleClass("arrow-up"); 
} 
+0

Отлично! это отлично помогает! –

+0

@Mathias. Тогда вы должны принять ответ. – fuzz

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