2013-09-10 4 views
0

Если я знаю имя атрибута, есть ли лучший способ, менее интенсивный (я мог бы использовать 100 s os Swatches), чтобы написать это? Что-то вроде: $ ("[attribute.name == 'Clear-Matt']"). $ (This) .attr ('cost');js xml получить другой атрибут известного атрибута

Если нет, каждая функция останавливается, когда (имя == «Clear-Matt»), или она будет продолжать идти до конца образцов? Если так есть способ остановить его?

var swatchCost=''; 
$(xmldoc).find('Swatch').each(function() { 
     var name = $(this).attr('name'); 
     if (name=="Clear-Matt") { 
      swatchCost=$(this).attr('cost'); 
     } 
}); 

XML:

<Swatch name="Clear" title="Clear" alt="Frame" cost="100" match=""></Swatch> 
<Swatch name="Clear-Matt" title="Clear-Matt" alt="Frame" cost="11" match=""></Swatch> 
<Swatch name="Blue-Orange" title="Blue-Orange" alt="Frame" cost="200" match=""></Swatch> 
<Swatch name="Pink-Blue-Clear" title="Pink-Blue-Clear" alt="Frame" cost="300" match=""> </Swatch> 
<Swatch name="Blue" title="Blue" alt="Frame" cost="11" match=""></Swatch> 

Спасибо.

ответ

1

Вы можете сделать это, используя селектор атрибутов.

$(xmlDoc).find('[name=Clear-Matt]').attr('cost'); // or use 'Swatch[name=Clear-Matt]' 

Fiddle

И ваш вопрос о существующих в обмен на каждый цикл, как только вы получили то, что вам нужно вы можете просто сделать return false; что эквивалентно break; заявления.

if (name=="Clear-Matt") { 
     swatchCost=$(this).attr('cost'); 
     return false; //break the iteration now. 
    } 
+0

Это замечательно, спасибо вам за оба ответа! – user2238083

+0

@ user2238083 Добро пожаловать ... – PSL

Смежные вопросы