使用某些标记jQuery获取元素子元素

时间:2010-03-12 10:29:15

标签: jquery dom tags css-selectors elements

我试图从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>")但如果你知道我的意思,那么在插入它之前就会失去使用它的要求。

提前致谢。

4 个答案:

答案 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