我可以同时对多个元素类型使用jQuery find()吗?

时间:2012-07-28 05:06:11

标签: 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(),
        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'),但是我不确定如何更改它,或者即使可以更改为“查找”textarea或输入。

4 个答案:

答案 0 :(得分:107)

使用逗号结合多个查询:

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

您也可以使用:input作为选择器,但效率不高,也可能包含一些您不想包含的内容。

答案 1 :(得分:2)

您可以使用.children()选择td的孩子

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

答案 2 :(得分:1)

您无法添加与textarea相同id的{​​{1}}。它不正确。 input对于单个html元素是唯一的。

我建议您id's

class

答案 3 :(得分:0)

"fix bug 1", "fix bugs 2" , "implement feature X"

selector1:任何有效的选择器。 selector2:另一个有效的选择器。 选择器N:您可以使用的选择器数量也更多。 返回的 release对象中DOM元素的顺序可能不相同,因为它们将按文档顺序排列。 示例:查找与这三个选择器中的任何一个都匹配的元素。

release = ["implement feature X"]

Read More