Подтвердить что ты не робот

Могу ли я использовать jQuery find() для нескольких типов элементов одновременно?

Я использую следующую функцию для изменения заполнения в столбце в моих формах:

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>

Есть ли способ изменить эту функцию, чтобы она работала либо для input, либо textarea? Я предполагаю, что способ сделать это - изменить var tds = $(this).find('input'),, но я не уверен, как его изменить или даже если можно изменить "найти" либо текстовое поле, либо вход.

4b9b3361

Ответ 1

Используйте запятую для объединения нескольких запросов:

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

Вы также можете использовать :input в качестве селектора, но он не так эффективен и может включать в себя некоторые вещи, которые вы не хотите включать.

Ответ 2

Вы можете использовать .children(), чтобы выбрать дочерний элемент td, что бы он ни был.

var tds = $(this).children();

Ответ 3

Вы не можете добавить textarea с тем же id как input. Это неверно. id's уникальны для одного элемента 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')