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 に答える