109

我写了一个基本上选择所有input type=text元素的代码,如下所示:

$('.sys input[type=text]').each(function () {}

如何将其更改为选择input[type=text]select

4

4 回答 4

197

使用普通的 css 选择器:

$('.sys input[type=text], .sys select').each(function() {...})

如果你不喜欢重复:

$('.sys').find('input[type=text],select').each(function() {...})

或者更简洁地说,传入context参数:

$('input[type=text],select', '.sys').each(function() {...})

注意:内部jQuery会将上述内容转换为find()等价物

http://api.jquery.com/jQuery/

在内部,选择器上下文是用 .find() 方法实现的,所以 $('span', this) 等价于 $(this).find('span')。

我个人认为第一个替代方案是最易读的:),不过你的看法

于 2012-05-18T09:16:38.383 回答
7
$('.sys').children('input[type=text], select').each(function () { ... });

.sys > input[type=text]编辑:实际上,如果您想要后代选择( ) ,则上面的代码等效于子选择器,.sys input[type=text]您需要使用@NiftyDude 给出的选项。

更多信息:

于 2012-05-18T09:16:47.880 回答
6

如果您有多个输入作为表单或表格中的文本需要遍历,我这样做了:

var $list = $("#tableOrForm :input[type='text']");

$list.each(function(){
    // Go on with your code.
});

我所做的是检查每个输入以查看类型是否设置为“文本”,然后它会抓取该元素并将其存储在 jQuery 列表中。然后,它将遍历该列表。您可以像这样为当前迭代设置一个临时变量:

var $currentItem = $(this);

这会将当前项目设置为每个循环的当前迭代。然后你可以用 temp 变量做任何你想做的事情。

希望这对任何人都有帮助!

于 2013-11-19T14:54:14.530 回答
3
$('input[type=text],select', '.sys');

循环:

$('input[type=text],select', '.sys').each(function() {
   // code
});
于 2012-05-18T09:17:36.007 回答