js xml获取已知属性的另一个属性

时间:2013-09-10 22:34:16

标签: javascript jquery xml

如果我知道属性名称,是否有更好的方法,更少的密集(我可以有100的os Swatches)方式来写这个? 类似于:$(“[attribute.name =='Clear-Matt']”)。$(this).attr('cost');

如果没有这个功能会在(name ==“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 个答案:

答案 0 :(得分:1)

您可以使用属性选择器执行此操作。

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

<强> Fiddle

一旦你得到你需要的东西,对于你现有的for-each循环的问题,你可以做一个等同于return false;陈述的break;

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