Jquery选择器输入[type = text]')

时间:2012-05-18 09:15:45

标签: javascript jquery

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

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

如何更改它以选择input[type=text]select

4 个答案:

答案 0 :(得分:159)

使用普通的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')。

我个人觉得第一个替代方案是最具可读性:),你的选择

答案 1 :(得分:6)

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

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

更多信息:

答案 2 :(得分:4)

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

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

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

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

var $currentItem = $(this);

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

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

答案 3 :(得分:3)

$('input[type=text],select', '.sys');

用于循环:

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