3

テーブル セルの値に奇妙な問題があります。

私のHTMLは次のようなものです:

<table>
   <tr>
      <td> celll </td>
      <td> celll </td>
      <td> celll </td>
   </tr>
   <tr>
      <td> celll </td>
      <td> <input type='text'> </td>
      <td> <input type='text'> </td>
   </tr>
</table>

inputタグが付いているセルを置き換えたい。

だから私:

 $('table').find('td').each(function(){
      if($(this).text()==''){
          console.log('found input')  

      }
  })

しかし、私のコードではそれを見つけることができないようです。

ここにヒントはありますか?

4

3 に答える 3

1

$(this).text()何らかの方法で html タグを「削除」しますが、すべての文字がノード内のテキストとして保持されます。これには空白が含まれます。

あなたの例では、この fiddle.text()に示すように、呼び出しは" cell "(スペース - "セル" - スペース) または" "(スペース - スペース)を返します。

その唯一の値に基づいてセルを識別する.text()ことは、実際には悪い選択です。mithunsatheesh' answerを試すか、idまたはセルに属性を追加classして、適切なセレクターを使用してみてください。

より多くのコンテキストを提供すれば、誰かがより適切な回答を提供できるかもしれません。

于 2013-08-23T20:34:25.053 に答える
0

$.text()メソッドは、各要素の結合されたテキスト コンテンツを取得し、すべての空白または改行も返します。

$.trimしたがって、メソッドを使用して文字列をトリミングできます。

$('table').find('td').each(function() {
  if($.trim($(this).text()) === ''){
    console.log('found input');  
  }
});

JSBin デモ

アップデート

別のオプションは.find()、以下の例のようにメソッドを再度使用することですが、私のJSPerfテストによると、jQuery 1.8.xを使用すると、パフォーマンスが低下します。

$('table').find('td').each(function() {
  if($(this).find('input').length){
    console.log('found input');  
  }
});
于 2013-08-23T20:37:26.403 に答える