2010-01-13 13 views
14

我想從具有空類屬性的所有元素中刪除類屬性。檢查class屬性是否爲空,然後在jQuery中爲true時將其刪除

如:

`<li class="">One</li>` 

成爲

我已經摺騰了好久努力工作吧!我得到的最接近的是

var len = $(".splitcolcontainer ul li[class]").val().length; 
if (len == 0) 
    { 
    $('.splitcolcontainer ul li').removeAttr("class"); 
    } 

但沒有雪茄。我知道這將會非常簡單,但沒有任何Google搜索可以讓我看到燈光!乾杯。

編輯:由於人問我爲什麼要刪除它,這裏是整個腳本:

$(document).ready(function() { 
    $('.splitcolcontainer ol, .splitcolcontainer ul').each(function() { 
      if($(this).is("ol")) { var ordered = true; } 
      var colsize = Math.round($(this).find("li").size()/2); 
      $(this).find("li").each(function(i) { 
       if (i>=colsize) { 
        $(this).addClass('right_col'); 
       } 
      }); 
      if(ordered) { 
       $(this).find('.right_col').insertAfter(this).wrapAll("<ol class='splitcol' start='" + (colsize+1) + "'></ol>").removeClass("right_col"); 

      } else { 
       $(this).find('.right_col').insertAfter(this).wrapAll("<ul class='splitcol'></ul>").removeClass("right_col");    
      } 

    }); 


    $('.splitcolcontainer').after('<div class="clear">&#160;</div>'); 
    $('.splitcolcontainer ul, .splitcolcontainer ol').wrap('<div></div>'); 
}); 

有一個空類的原因是因爲我加入類的right_col「,然後刪除它在後面。我不知道是否會有其他類,所以我需要檢查屬性是否爲空。感謝你目前的幫助!

+2

也許這會有助於告訴我們*爲什麼*您試圖刪除該屬性? – cdeszaq 2010-01-13 15:52:37

+0

Cdeszaq是對的,這個問題的措辭使我們想知道是否有更好的方法來解決這個問題。不知道問題,我們無法回答。 – 2010-01-13 15:56:59

+1

添加了整個腳本供您參考,謝謝! – Glo 2010-01-13 16:06:06

回答

17
$('*[class=""]').removeAttr('class'); 
+0

一行可愛的代碼。非常感謝。 – 2013-12-18 04:27:03

0

在解析文檔並創建了DOM樹之後,元素的屬性實際上就是單個DOM對象的屬性,所以雖然可以從源刪除該屬性,但它仍然存在(但是爲空)在DOM中的每個對象上。

+0

是的,你讓我意識到額外的jquery是毫無意義的,額外的毫秒添加到頁面負載是不值得去真正的屬性。哦,對不起,最後的毫無意義的問題:S – Glo 2010-01-13 16:25:24

+0

這不是沒有意義的,我剛剛有同樣的問題。 – CurtainDog 2011-02-24 03:52:12

1
$('li[class=""]').each(function() { 
    this.removeAttribute('class'); 
}); 
1

你並不真正需要的任何庫(如jQuery)做此:

if (element.className == "") 
    element.removeAttribute('class'); 
0

添加/刪除類是jQuery庫的核心功能:http://docs.jquery.com/Attributes

你可以看到任何給定的元素集合是否具有與hasClass相關的類(http://docs.jquery.com/Attributes/hasClass#class

然後刪除特定類removeClass(http://docs.jquery.com/Attributes/removeClass#class

所以,如果你需要從一個特定的元素刪除類「ABC」做:

$("#element").removeClass("abc"); 

這將只刪除指定類,甚至如果有其他人在那裏。添加一個類以相同的方式工作。

+0

這是我想要移除的類屬性,不僅僅是一個類,並且只有在沒有類時。 – Glo 2010-01-13 16:13:15

+0

但是爲什麼?空的類屬性不會以任何方式做任何事情。 – cdeszaq 2010-01-13 16:16:07

+1

Cleaner html我想,我想這並不重要,但至少我知道以供將來參考! – Glo 2010-01-13 16:19:10

2

我同意,removeClass留下一個空的類屬性是很奇怪的。我期望在addClass,removeClass之後將DOM返回到其原始狀態。

我已經結束了什麼做的是:

$(this).removeClass("my-class").filter('[class=""]').removeAttr('class'); 

這應該是非常高性能的。

(我的代碼是用於HTML編輯器的,所以重要的是生成的代碼儘可能乾淨。)

相關問題