2014-09-16 2 views
0

Я пытаюсь добавить класс в DIV, когда его щелчка и удалить при его нажатии второй раз я в настоящее время это имеет свой сценарий -JQuery добавить/удалить класс с помощью «это»

$(".project").click(function(){ 
     if ($(".project-expand", this).is(':visible')) { 
      $(".project-expand",this).hide(1000); 
      $('.project').delay(1000).queue(function(){ 
      $(".project").removeClass('item-dropped').clearQueue(); 
      }); 
     } else if ($(".project-expand", this).is(':hidden')) { 
      $(".project-expand").hide(1000); 
      $(".project-expand",this).show(1000); 
      $(".project").addClass('item-dropped'); 
     } 
    }); 

Но это добавляет класс «пункт сброшенных» для всех моих див, которые имеют класс «проект», когда я изменить код на -

$(".project", this).addClass('item-dropped'); 

Он не делает ничего, где я буду здесь не так?

+0

ли вы имеете в виду '$ addClass ('пункт сброшенных');' (, $ (это) "проект".).? –

+0

Можете ли вы опубликовать HTML-код, к которому это применяется? – j08691

ответ

1

Вместо того, чтобы использовать селектор класса $('.project') вы могли бы просто использовать цель события щелчка ($(this)):

$(".project").click(function() { 
    var project = $(this); 
    var projectExpand = $(".project-expand", this); 

    if (projectExpand.is(':visible')) { 
     projectExpand.hide(1000); 
     project.delay(1000).queue(function() { 
      project.removeClass('item-dropped').clearQueue(); 
     }); 
    } else if (projectExpand.is(':hidden')) { 
     $(".project-expand").hide(1000); 
     projectExpand.show(1000); 
     project.addClass('item-dropped'); 
    } 
}); 

Дополнительная информация: Причина того, что вы пытались сделать, не работал изначально является потому что $('.project', this) ищет элементы с классом project внутри текущего элемента (т.е. ищет проект внутри проект)

+0

Это действительно умный я не знал, что вы могли бы это сделать! – Zeetkings11

+0

@ Zeetkings11 Добавил немного больше информации, объясняя, почему то, что вы пытались, не сработало :) – Nunners

+0

@MartinErnst Хорошая точка, я немного изменил код, чтобы создать только необходимые объекты jQuery – Nunners

0

Вы должны использовать $ (это), чтобы добавить класса на щелкнутом пункте:

 $(".project").click(function(){ 
      if ($(".project-expand", this).is(':visible')) { 
       $(".project-expand",this).hide(1000); 
       $(this).delay(1000).queue(function(){ 
       $(this).removeClass('item-dropped').clearQueue(); // Here 
       }); 
      } else if ($(".project-expand", this).is(':hidden')) { 
       $(".project-expand").hide(1000); 
       $(".project-expand",this).show(1000); 
       $(this).addClass('item-dropped'); // Here 
      } 
     }); 
Смежные вопросы