我可以同时对多个元素类型使用jQuery find()吗?
我正在使用以下函数更改表单列中的填充:我可以同时对多个元素类型使用jQuery find()吗?,jquery,Jquery,我正在使用以下函数更改表单列中的填充: function padTitles() { $('#option-grid #dataTable tr, #topic-grid #dataTable tr') .each(function () { var tds = $(this).find('input'), text = tds.filter('[id^="input_TempRowKey_"]').val(), t
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>
测验
是否有办法更改此函数,使其适用于
输入
或文本区域
?我假设这样做的方法是更改var tds=$(this).find('input'),
,但是我不确定如何更改它,或者即使可以更改为“find”文本区域或输入 使用逗号合并多个查询:
var tds = $(this).find('input, textarea');
您也可以使用
:input
作为选择器,但它效率不高,还可能包含一些您不希望包含的内容。您可以使用.children()
选择td
的子对象,不管它是什么
var tds = $(this).children();
不能添加与另一个元素具有相同id的
textarea
。这是不正确的<代码>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')
测验
var tds=$(this.find('.myclass'))
选择器1:任何有效的选择器。
选择器2:另一个有效的选择器。
selectorN:您可以选择更多有效的选择器。
返回的jQuery
对象中DOM元素的顺序可能不同,因为它们将按文档顺序排列。
示例:查找与这三个选择器中的任何一个匹配的元素
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>multiple demo</title>
<style>
div, span, p {
width: 126px;
height: 60px;
float: left;
padding: 3px;
margin: 2px;
background-color: #eee;
font-size: 14px;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<div>div</div>
<p class="myClass">p class="myClass"</p>
<p class="notMyClass">p class="notMyClass"</p>
<span>span</span>
<script>
$( "div, span, p.myClass" ).css( "border", "3px solid red" );
</script>
</body>
</html>
多重演示
司,司潘,p{
宽度:126px;
高度:60px;
浮动:左;
填充:3倍;
保证金:2倍;
背景色:#eee;
字体大小:14px;
}
div
p class=“myClass”
p class=“notMyClass”
跨度
$(“div,span,p.myClass”).css(“边框”,“3px实心红色”);
一个表单使用文本区域,另一个表单使用输入。对不起,我应该提到这是两种不同的形式。如果两种形式在同一页,它仍然无效。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>multiple demo</title>
<style>
div, span, p {
width: 126px;
height: 60px;
float: left;
padding: 3px;
margin: 2px;
background-color: #eee;
font-size: 14px;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<div>div</div>
<p class="myClass">p class="myClass"</p>
<p class="notMyClass">p class="notMyClass"</p>
<span>span</span>
<script>
$( "div, span, p.myClass" ).css( "border", "3px solid red" );
</script>
</body>
</html>