63

次の関数を使用して、フォームの列のパディングを変更しています:

function padTitles() {
    $('#option-grid #dataTable tr, #topic-grid #dataTable tr')
        .each(function () {
            var tds = $(this).find('input'),
        text = tds.filter('[id^="input_TempRowKey_"]').val(),
        tdToPad = tds.filter('[id^="input_Title_"]'),
        pad;
            if (/\.0$/.test(text)) {
                pad = 10;
                level = 1;
            } else {
                pad = 35;
                level = 2;
            }
            tdToPad.css('margin-left', pad);
            a = tdToPad.closest('tr');
            if (tdToPad.closest('tr').get().className) {
                tdToPad.closest('tr').get().className = tdToPad.closest('tr').get().className.replace(/\blevel\-.*?\b/g, 'level-' + level);
            } else {
                tdToPad.closest('tr').addClass('level-' + level)
            }
        });
}

このフォーム HTML ではうまく機能します。

<td id="title_1" class=" ">
   <input type="text" value="Tests" name="item.Title" id="input_Title_1" >
</td>

次の HTML でも機能するようにしたいと思います。

<td id="title_1" class=" ">    
  <textarea name="item.Title" id="input_Title_1">Tests</textarea>
</td>

またはのいずれかで機能するように、この関数を変更する方法はありますinputtextarea? これを行う方法は変更することだと思いますが、変更var tds = $(this).find('input'),方法がわかりません。また、テキストエリアまたは入力のいずれかを「検索」するように変更できるかどうかもわかりません。

4

4 に答える 4

148

コンマを使用して複数のクエリを結合します。

var tds = $(this).find('input, textarea');

セレクターとしても使用できますが:input、それほど効率的ではなく、含めたくないものも含まれている可能性があります。

于 2012-07-28T05:07:17.410 に答える
3

それが何であれ、s子.children()を選択するために使用できますtd

var tds = $(this).children();
于 2012-07-28T05:11:01.130 に答える
2

別の要素textareaと同じa を追加することはできません。idそれは間違っています。id値は、ドキュメント内の単一の html 要素に対して一意です。

代わりにあなたに提案しますclass

<input type="text" value="Tests" class="myclass" name="item.Title" id="input_Title_1" >

<textarea name="item.Title" class="myclass" id="input_Title_2">Tests</textarea>

var tds = $(this).find('.myclass')
于 2012-07-28T05:16:04.183 に答える