0

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

这是我的代码的简化版本。我需要在带有类的 TD 中添加一条消息 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>
4

2 回答 2

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 !!'); 
   }    
});

检查小提琴

更新的小提琴

如果是这种情况,我会使用 :contains 选择器

$('.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 !!'); 
   }    
});​

更新的小提琴

于 2012-12-18T23:27:21.007 回答
0

如果 html 结构(虽然看起来有点过分)就像问题然后使用

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

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

演示在http://jsfiddle.net/gaby/kjcXH/

于 2012-12-18T23:24:05.040 回答