我正在使用jQuery來遍歷文檔中的某些元素。這些元素的類型爲<tr>
,類別爲.input-row
。某些元素也可以有一個輔助類(例如.input-area
)。jQuery:獲得「二級」類
我使用$(".input-row").each()
循環遍歷元素,但是如何確定$(this)
元素是否具有「輔助」類,如果是,請獲取此名稱?
我正在使用jQuery來遍歷文檔中的某些元素。這些元素的類型爲<tr>
,類別爲.input-row
。某些元素也可以有一個輔助類(例如.input-area
)。jQuery:獲得「二級」類
我使用$(".input-row").each()
循環遍歷元素,但是如何確定$(this)
元素是否具有「輔助」類,如果是,請獲取此名稱?
$(".input-row").each(function(){
$.each($(this).attr('class').split(/\s+/), function(i, v){
if(v !== 'input-row'){
alert(v);
}
});
});
問題問「如何確定$(this)-element是否具有」次要「類,如果是,請獲取這個」...「的名稱你的例子意味着你已經知道類的名字 –
我編輯了代碼,我認爲它會做你想要的。 – michaeljdennis
可以使用attr
得到所有類的列表,你可以簡單地擺脫類的你來選擇的元素:
$(".input-row").each(function() {
var allClasses = $(this).attr("class"),
otherClasses = allClasses.replace("input-row", "");
});
如果元素有兩個以上的班,那麼你將留下其他類的列表。要將它們分開,您可以在空格中使用split
。
'$(this).attr(「class」)'相當於'this.className'。 – Tomalak
您可以獲取元素上的所有類,然後刪除您知道存在的類('input-row'),然後您將在該元素上留下任何其他類。
$('.input-row').each(function() {
var classes = $.trim($(this).attr('class').replace('input-row', ''));
if (classes.length > 1) {
alert(classes) // Names of all of the remaining classes
}
}
如果您想單獨獲取它們,可以使用classes.split('')來獲取數組。
我更喜歡聲明式的方法。你知道哪些類可以有,所以對他們寫的情況:
$(".input-row").each(function() {
var myClasses = this.className.split(" ");
$.each(myClasses, function (i, className) {
if (className != 'input-row') {
alert(className);
}
});
});
:
$(".input-row.input-area").each(/* ... */);
$(".input-row.input-field").each(/* ... */);
如果您由於某種原因不知道類的名字,你可以沿着線提取它
我會去這個
var otherClasses = $('.input-row').attr('class').split(' ');
otherClasses.splice($.inArray("input-row", otherClasses),1);
簡單地做這
var otherClasses = $('.input-row').attr('class').replace('input-row', '').split(' ');
由於「輸入行」後面的空格,會給你一個額外的字符串,其中有一個空的值。
使用分割。請參閱:http://stackoverflow.com/questions/4239947/jquery-get-second-class-name –
如果您需要*檢查*元素的類,你可能會做錯什麼。現在'class'不再是用來存儲數據的 - 它有'data-whatever'(通過jQuery'.data('whatever')')。如果你已經需要這個類來應用格式化,那麼使用'hasClass()'檢查是絕對正確的。 – ThiefMaster