2015-09-10 5 views
2

У меня есть динамически встроенные вкладки. Когда вы добавляете вкладку, вы даете ей класс (который равен имени, которое вы указываете на вкладке), тот же класс добавляется к описанию вкладки, которое появляется под полем описания по умолчанию.Удалить элементы с тем же классом

Проблема заключается в том, что я удаляю вкладку, которую я просматриваю через <li>, и проверяю, есть ли у них определенный класс, если они есть, поэтому они удаляются. Но, естественно, только сама вкладка удаляется, но не ее описание, хотя описание также имеет тот же класс, что и вкладка. Вот fiddle.

Мой код, который отвечает за удаление вкладок и описание, находится в строках 59-66 в разделе JavaScript (вставлен снизу).

  /*********Remove a tab******/ 
     $(".close").click(function(){ 

      $(this).closest("li").fadeOut(200, function() {$(this).remove();}); 
      $thisClass = $ (this).closest("li").attr("class"); 
      alert ($thisClass); 
      $("li").hasClass($thisClass).remove(); 

     }); 
+0

'hasClass()' возвращает логическое значение. Он сообщает вам, есть ли у элемента класс или нет. Вероятно, вы захотите использовать '.filter ('.' + $ ThisClass)'. –

+0

Кроме того, '.attr (" class ")' может возвращать вам несколько классов (разделенных пробелами). –

+0

Кажется, что не работает (( –

ответ

1

Если у вас есть такая же ситуация, как описано в скрипку, то

  1. вам нужно удалить класс «элемент» из списка классов Li
  2. Правильная ошибка с hasClass

и вы получите что-то вроде этого

 $(".close").click(function(){ 

      $(this).closest("li").fadeOut(200, function() {$(this).remove();}); 
      $thisClass = $ (this).closest("li").attr("class").replace('item ',''); 
      alert ($thisClass); 
      $("li."+$thisClass).remove(); 
     }); 
1

изменение попытка $("li").hasClass($thisClass).remove(); к $('.'+$thisClass).remove();

+0

Не должно быть '$ ('.' + $ ThisClass)' или даже '$ ('li.' + $ ThisClass)'? –

+0

да, забыли про индикатор класса. –

0
$thisClass = $ (this).closest("li").attr("class"); 

Это вернет вам все классов на элементе. Этот элемент может иметь более одного класса. Если да, то вы получите список, разделенный пробелом.

Также hasClass() возвращает boolean. Он сообщает вам, есть ли у элемента класс или нет.

Вы хотите сделать это:

$('li.'+$thisClass.replace(' ', '.')).remove(); 
Смежные вопросы