2015-09-10 96 views
2

我有動態構建的選項卡。當你添加一個標籤時,你給它一個類(它等於你給標籤的名字),同樣的類被添加到標籤的描述中,該描述出現在默認描述字段下面。刪除具有相同類別的元素

問題是,當我刪除一個標籤時,我通過<li>元素搜索並檢查它們是否具有某個類,如果它們具有,則將它們移除。但自然只有選項卡本身被刪除,但不是它的描述,儘管描述也有類似選項卡的類。 這是fiddle

我的代碼可用於刪除標籤和說明,位於JavaScript部分的59-66行(粘貼在下面)。

  /*********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. 您需要從李班列表中刪除類「項目」一樣的情況
  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

是的,忘記了關於class indicator。謝謝! –

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

這將返回所有類的元素。該元素可能有多個類。如果是這樣,那麼你會得到一個空格分隔的列表。

另外hasClass()返回一個布爾值。它會告訴你一個元素是否有類。

你想這樣做:

$('li.'+$thisClass.replace(' ', '.')).remove(); 
相關問題