从不同元素中读取价值

时间:2012-12-18 23:19:05

标签: jquery

我需要想出一种方法来检查具有隐藏元素的特定值,如果找到,则显示特定消息。我认为可以用jQuery来完成,但我正在努力想办法......

这是我的代码的简化版本。我需要在课堂上发一条消息  outputHere

该消息是有条件的,基于我是否会找到一个带有跨度的类sku,它位于嵌套表中,位于隐藏的TR中...

如果找到SKU值,我输出它,如果不是我查找ITEMID,如果两者都找不到,我输出一个默认消息......

<table>
<tr>
  <td>
   <div class="outputHere">val</div>
  </td>
</tr>
<tr>
  <td>
    <div>
    <table class="nested">
    <tr>
       <td>
        <span class="sku">SKU number</span>
       </td>
    </tr>
    </table> 
<tr>
  <td>
    </div>

  </td>
</tr>
</table>

有点不知所措......认为它应该是这样的:

$('.outputHere').each(function() {
 var $message =
 $(this).parents('table').closest('tr').find('span.sku');

if ($message) {
   $(this).text($message); } else {
    $(this).text('Default message'); 
}    
});

更新

如果我的SKU单元没有class =“sku”而是SKU编号怎么办?那么我如何找到SKU值呢?

<table>
<tr>
  <td>
   <div class="outputHere">val</div>
  </td>
</tr>
<tr>
  <td>
    <div>
    <table class="nested">
    <tr>
       <td>
        <span class="label">SKU:</span>
       </td>
       <td>sku_value</td>
    </tr>
    </table> 
<tr>
  <td>
    </div>

  </td>
</tr>
</table>

1 个答案:

答案 0 :(得分:1)

$('.outputHere').each(function() {
   var $this = $(this);
   var $span = $this.closest('tr').next('tr').find('span.sku');

   if($span.html().length) {
      $this.text($span.html()); 
   } else {
      $this.text('Span Not found !!'); 
   }    
});

<强> Check Fiddle

更新后的内容

如果是这种情况,我会使用:contains selector

$('.outputHere').each(function() {
   var $this = $(this);
    var $span = $this.closest('tr').next('tr').find('.label:contains(SKU)');

   if($span.html().length) {
       var num = $span.html().split(':')[1];
      $this.addClass('changed').text(num); 
   } else {
      $this.text('SKU Not found !!'); 
   }    
});​

<强> UPDATED FIDDLE