Могу ли я использовать 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'),
, но я не уверен, как его изменить или даже если можно изменить "найти" либо текстовое поле, либо вход.
Ответы
Ответ 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')