2012-09-07 87 views
0

我試圖初始化多個ProgressBars,在相同的類下,只有一個jQuery片段。我希望將該值設置爲HTML屬性「值」。jQuery UI ProgressBar - 設置值等於HTML屬性

這裏的HTML:

<div class="pop" value="98"></div> 
<div class="pop" value="85"></div> 
<div class="pop" value="78"></div> 
<div class="pop" value="54"></div> 

這裏是我認爲會的工作jQuery的:

$(".pop").progressbar({ 
value: parseInt($(this).attr("value")) 
}); 

它沒有,但。出現進度條,但他們看上去好像他們的值是0

如果我將其更改爲:

$(".pop").progressbar({ 
value: parseInt($(".pop").attr("value")) 
}); 

然後,他們都得到初始化的罰款,但他們所有的價值的get設置爲第一HTML的價值元素(在這個例子中,它們都會被設置爲98)。我期待這一點。

那麼無論如何要做到這一點?

回答

4

你想使用jQuery.each函數。這裏有一個例子:

$.each($(".pop"), function() { 
    $(this).progressbar({ value: parseInt($(this).attr("value")) }); 
}); 

替代例如:

$(".pop").each(function() { 
    $(this).progressbar({ value: parseInt($(this).attr("value")) }); 
}); 
+0

都感謝你和我上面的答案! – hellohellosharp

1

我會遍歷每個div來確保它抓住右側的「值」屬性,因爲在你的第一個例子中,$(this)不給你任何如this是在該上下文中的窗口對象。

$('.pop').each(function(index) { 
    $(this).progressbar({ 
     value: parseInt($(this).attr("value")) 
    });  
}); 
+0

謝謝!請問爲什麼這是窗口而不是元素? – hellohellosharp

+0

progressbar方法不會設置「this」值,這意味着它將默認爲它在當前範圍內的任何值,通常是Window對象。每個()都被設置爲你的循環所在的當前元素/對象。 – rwilliams

-2

您必須設置屬性的值:

var progressBar = $('#progressBar'); 
var v = 70; 
progressBar.arrt('value', v);