2011-03-17 88 views
4

試圖使用.attr函數檢索元素的屬性。我使用動態創建一個輸入元素,並將該值分配給類屬性。jQuery .attr()多個屬性

$('.item-selection-amount').click(function(){ 
    console.log($(this).attr('class')); 
}); 

這將返回:

item-selection-amount ui-corner-all price 
item-selection-amount ui-corner-all 66.00 

價格永遠是不同的,但有可能拉班的第三屬性值如attr('class[2]')等?

+2

我不認爲這是好主意,商店的價格在課堂上。因爲術語'class'定義了一組元素 – 2011-03-17 04:55:53

回答

8

您正在使用class屬性錯誤
它旨在用於視覺呈現。

你想要做的是將附加數據到一個元素。

爲了這個目的,你可以使用HTML5 data-屬性:如果你想價格添加到元素只是呈現HTML類似下面一個服務器上

$('.item-selection-amount').data('price', 66.00); 
// ... later 
$('.item-selection-amount').click(function(){ 
    console.log($(this).data('price')); 
}); 

<li class='item-selection-item' data-price='66.00'>Something</li> 
+0

我也這麼認爲... – 2011-03-17 04:57:50

+0

did not know你可以做到這一點!這很棒。 – goingsideways 2011-03-17 05:08:33

1

如果這個類總是有三個類,那麼可以通過空格拆分它們並獲得第三個索引。

$(this).attr('class').split(" ")[2]; 
0

開始也許

var arrClasses = $(this).attr('class').split(" "); 

此後,您可以在這個循環,直到你得到一個相匹配的正則表達式,或者,如果你有信心,它會一直處於第3位(而我也不會相信),你可以嘗試像你說的,只是用

arrClasses[2] 

去得到您的示例中的價格。

1

如果你是積極的總是要在類第三元素,你可以這樣做:

$('.item-selection-amount').click(function(){ 
    console.log($(this).attr('class').split(' ')[2]); 
}); 

這打破了類增長空間,翻出3元。

但是,如果您嘗試在「類」字段中存儲有關產品的信息。更好的選擇是使用HTML5支持的數據屬性(並且不會破壞舊的非HTML5瀏覽器中的任何內容)。例如:

<li class="item-selection-amount" data-price="66.00">My Product</li> 
+1

'this.className',請 - 使用jQuery的超棒力量從單個元素中獲取屬性並不完全有效 – 2011-03-17 04:58:37

2

您是否將HTML作爲CSS類包含在價格中? 您不能真正依賴CSS類名稱的順序,除非您將它們設置爲HTML並且絕不會在JavaScript中進行更改。 你應該使用 .addClass().removeClass()一般操作和測試CSS類jQuery中, .toggleClass().hasClass()

用於存儲數據考慮使用數據 - 屬性:

<span class="item-selection-amount" data-price="66.00">...</span> 

,它很容易與jQuery使用:

$('.item-selection-amount').click(function(){ 
    console.log($(this).data('price')); 
}); 

DEMO。你可以使用你現在使用的任何標籤來代替span。

0

你可以使用這樣

$('.item-selection-amount').click(function(){ 
    console.log($(this).attr('class').split(' ')[2]); 
}); 

這僅僅是回答你所需要的, 但不要把階級標籤的任何數據,

+0

啊,你已經得到了回答,通過「rob waminal」;) – 2011-03-17 05:09:59