3

我试图通过只提供表单的名称并且只知道那些想要的字段是输入元素来从 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 元素并在将它插入(如果我曾经这样做的话)到解码代码之前使用它吗?在 mootools 中,我们有类似的东西var myEl = new Element(element[, properties]); ,然后您可以在进一步的表达式中引用它,但我不明白如何在 jQuery 上做到这一点

我最终做的事情是这样的:$('#where').before("<a id='linkId' href='#'>Link Text</a>")但是如果您知道我的意思,这违背了在插入它之前使用它的要求。

提前致谢。

4

4 回答 4

5

如果您想要所有后代,那么@woland 的答案有效。如果你真的只想要你的 > 那么直接的孩子

$('#form').children('input')

Wolands 匹配姓名、姓氏和电话。我的只匹配名字和姓氏

<form action='#' id='formId'>
<input id='name' />
<input id='surname'/>
<div>
<input id='phone'/>
</div>
</form>
于 2010-03-12T10:39:04.333 回答
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>
于 2010-03-12T11:00:36.943 回答
1

以下是它的工作原理:

$('#formId input')
于 2010-03-12T10:34:06.120 回答
1

如果要遍历所有输入,请查看jQuery中的each()函数:

于 2010-03-12T10:36:09.330 回答