2013-01-31 103 views
3

我已經繼承了一些jQuery和HTML,並且需要確定任何HTML元素是否具有任何值的類名。我已經閱讀了幾個主題和谷歌搜索,但找不到有用的東西。 所以在僞代碼我想要的是:發現任何元素在jQuery中是否有任何類

Loop through all HTML elements 

If any of them have any class at all: 
    Get their class name as a string 

希望是有道理的!

回答

10

嘗試:

$('*').each(function() { 
    if ($(this).hasClass()) { 
     var class_name = $(this).attr('class'); 
     // do something 
    } 
}); 

爲什麼你會想這樣做,我不知道。這是非常低效

+5

是啊,這是一個相當繁重的操作。我敢打賭,有一個更好的方法來解決這個問題。 – isherwood

+1

謝謝:)它不是我想要特別做的事情。我不是jQuery專家,但隨着我繼承的代碼,我認爲它可能是唯一的方法來做我需要的和客戶端(他自己是一個有才華的業餘編碼器)想要的。 我已經設法將類的數量降到6,所以我希望這會減少開銷。 再次感謝,我很感激。 – Kev

+1

經過測試,並不適用於jQuery 3.1.1。 – TinkerTenorSoftwareGuy

1
var classObj = {}; 

$('*').each(function(){ 
    var cNames = this.className.split(' '); 
    for(var i=0, l=cNames.length; i<l; i+=1){ 
     classObj[cNames[i]] = true; 
    } 
}); 

這將使你的對象(classObj)每類出現在文件的屬性,所以類名稱不會多次出現,如果有與相同的元素在文檔中的類。我真的不會這樣做,或者在這方面看到任何用例。

+0

謝謝你的時間,我很感謝:) – Kev

6

您可以使用這樣的事情:

$("[class]").each(function(){ 
    var className = $(this).attr("class"); 
}) 

Has Attribute Selector

演示:http://jsfiddle.net/L5WAV/1/(見控制檯的結果 - 兩個div應該可以找到)

+0

謝謝你的時間,我很感激它:) – Kev

1

要取得類,你可以的所有元素使用$('*[class]')

$('*[class]').each(function(){ 
    // do what you want 
}); 

Y你甚至可以用$('*[class]').length來輕鬆計數。

+0

謝謝你的時間也,我很欣賞它:) – Kev

10

對於它的價值:

$(this).hasClass() 

總是返回

$("[class]") 

也不管用,因爲它返回像

<p class=""> my p </p> 

的jsfiddle元素都在這裏:http://jsfiddle.net/JZ8LV/1/

解決方案

$(this).hasClass('') 

回報的元件而不一類,包括那些形式

<p class=""> my p </p> 

所以

$('*').each(function() { 
    if ($(this).hasClass('') === false) { 
     $("body").append($(this).prop("tagName") + " has a proper class defined <br/>"); 
    } 
}); 

返回所有的標籤具有定義適當的類。

的jsfiddle:http://jsfiddle.net/2Rtj5/

0

不是一個直接的問題,但我需要它,所以在這裏也適用於未來的用戶。

如果您想了解是否任何元素都有一個特定,您可以使用此功能:

function find_any_element(className) { 
    var found = false; 
    $('*').each(function() { 
     if ($(this).hasClass(className)) { 
      var class_name = $(this).attr('class'); 
      alert("There is an element with this class: " + class_name); 
      found = true; 
     } 
    }); 
    if(!found) { 
     alert("No element with className '" + className + "' found."); 
    } 
} 
相關問題