在jQuery中,如何通过name属性选择不同的元素?
我试图在表单收音机、文本框和选择框中循环一些元素,并从每个元素中获取值。我通过每个元素的名称循环,我认为我不能使用ID,因为一组单选按钮都有不同的ID,但都有相同的名称 这里有两个选择器,包含我需要的所有元素:在jQuery中,如何通过name属性选择不同的元素?,jquery,css-selectors,Jquery,Css Selectors,我试图在表单收音机、文本框和选择框中循环一些元素,并从每个元素中获取值。我通过每个元素的名称循环,我认为我不能使用ID,因为一组单选按钮都有不同的ID,但都有相同的名称 这里有两个选择器,包含我需要的所有元素: $("input[name=" + prop + "]") $("select[name=" + prop + "]") 其中,prop是循环迭代器 我想在两个选择器上执行相同的操作,因此我尝试将它们合并: $("input[name=" + prop + "]", "select[n
$("input[name=" + prop + "]")
$("select[name=" + prop + "]")
其中,prop是循环迭代器
我想在两个选择器上执行相同的操作,因此我尝试将它们合并:
$("input[name=" + prop + "]", "select[name=" + prop + "]")
但那没用
有没有办法在一个选择器中同时搜索输入元素和选择元素
谢谢 您只犯了一个小错误:您将两个选择器声明为两个不同的参数,而不是将逗号作为选择器一部分的一个参数:
$("input[name=" + prop + "], select[name=" + prop + "]")
您编写它的方式使用第二个选择器参数的元素作为解析第一个选择器参数的上下文。如果逗号包含在选择器字符串中,它将起作用。你也可以这样做
$("input, select").filter("[name=" + prop + "]")
这就消除了两次写入[name=+prop+]的麻烦。不要试图将您所做的每件事都硬塞进jQuery中。DOM Level 1 HTML标准为您提供了HTMLFormElement.elements,它简单、快速,并且不会像选择器字符串那样对名称中的异常字符失败
<form id="x" ...>
<input type="text" name="foo" />
<select name="foo"></select>
</form>
<script type="text/javascript">
var prop= 'foo';
var form= $('#x')[0];
var foos= form.elements[prop];
alert(foos.length+' '+foos[0].type+' '+foos[1].type); // 2 text select-one
</script>
哇-我完全明白我做错了什么。我复制并粘贴了两个选择器,使之成为一个选择器,我完全搞砸了引号的位置。谢谢你抓住了!您可能还想添加textarea和按钮。这是一个很好的提示——事实上,我经常落入这个陷阱。退一步并记住jQuery所用的语言是很好的。作为奖励,这将捕获其他不是输入或选择的表单字段,如textarea,以防表单在将来的某个地方发生更改。