我试图从jQuery获取某个表单中的所有输入元素,只提供表单的名称,只知道那些想要的字段是输入元素。
让我们说:
<form action='#' id='formId'>
<input id='name' />
<input id='surname'/>
</form>
如何使用jQuery单独访问它们?
我尝试了类似$('#formId > input')
的内容但没有成功,实际上控制台上出现了错误"XML filter is applied to non-XML value (function (a, b) {return new (c.fn.init)(a, b);})"
也许我必须和.children或类似的东西一起做?我是jQuery的新手,我不是很喜欢Docs。在Mootools中它更友好,或者我只需要习惯它。
哦,最后但并非最不重要的,我之前已经看过它,但没有最终的答案,我可以用jQuery创建一个新的dom元素并在插入它之前使用它(如果我曾经做过)到de代码中吗?在mootools中,我们有var myEl = new Element(element[, properties]);
之类的东西
然后你可以在更进一步的表达式中引用它,但我不明白如何在jQuery上做到这一点
我最终做的是这样的事情:$('#where').before("<a id='linkId' href='#'>Link Text</a>")
但如果你知道我的意思,那么在插入它之前就会失去使用它的要求。
提前致谢。
答案 0 :(得分:5)
如果你想要所有的后代,那么@ woland的回答是有效的。如果你真的只想要你的&gt;所指示的直接孩子然后
$('#form').children('input')
Wolands匹配姓名,姓名和电话。我只匹配名字和姓氏
<form action='#' id='formId'>
<input id='name' />
<input id='surname'/>
<div>
<input id='phone'/>
</div>
</form>
答案 1 :(得分:3)
我希望这能回答你的问题。
<script type="text/javascript">
$(document).ready(function() {
// Question part 1
var formInputs = $("form#formId :input");
formInputs.each(function(index) {
alert(index + ': ' + $(this).attr("id") + "=" + $(this).val());
});
// Question part 2
var a = $("<a id='linkId' href='#'>Link Text</a>");
a.click(function(){alert("hello")});
$('#where').before(a);
});
</script>
<form action="#" id="formId">
<input id="name" type="text" value="foo" />
<input id="surname" type="text" value="bar" />
<div>
<input id="phone" type="text" value="911"/>
</div>
</form>
</div>
<div id="where"></div>
答案 2 :(得分:1)
以下是它的工作原理:
$('#formId input')
答案 3 :(得分:1)
如果要遍历所有输入,请查看jQuery中的each()
function: