2015-04-27 6 views
0

Я хочу использовать виджет пользовательского интерфейса progressbar для нескольких элементов. Значение, которое я хочу передать, является фактическим атрибутом элемента. Как мне это достичь?jQuery Selector wildcard selector attribute как параметр объекта

Я попробовал это, но они не работают:

$('[id^=pkg]').progressbar({value: $(this).attr('value')}); 
$('[id^=pkg]').progressbar({value: $([id^=pkg]).attr('value')}); 

Я получаю значение:

$([id^=pkg]).attr('value') 

Извинения, но это не хватало:

<div id="pkg1" value="30"><div class="progress-label"></div></div> 

Какие требуется parseInt().

ответ

2
$('[id^=pkg]').each(function() { 
    var $this = $(this); 
    $this.progressbar({ 
     value: $this.attr('value') 
    }); 
}); 

Btw, это лучше использовать имя класса вместо [id^=pkg]

+1

Спасибо за кончик, я согласен изящнее использовать имя класса. –

2

Возможно, вам потребуется повторить и инициировать каждый за раз?

$('[id^=pkg]').each(function() { 
    $(this).progressbar({value: $(this).attr('value')}); 
}); 

Вариант 1 не будет работать, так как значение this не то, что вы ожидаете, что это будет.

$('[id^=pkg]').progressbar({value: $(this).attr('value')});