2010-03-12 103 views
3

我想通過僅提供表單的名稱並且只知道那些想要的字段是輸入元素來從jQuery的某個表單獲取所有輸入元素。獲取具有特定標籤的元素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);})"

也許我有。兒童或類似的東西做的?我在jQuery方面很新,而且我不太喜歡Docs。它在Mootools中非常友好,或者我只需要適應它。

哦,最後但並非最不重要的一點,我已經看到它之前問過,但沒有最終答案,我可以創建一個新的dom元素與jQuery和它之前插入它(如果我曾經這樣做)de代碼?在mootools的,我們有這樣的事情var myEl = new Element(element[, properties]); ,然後你可以參考它的進一步表現,但我不明白怎麼做,jQuery的

我最後做的事情是這樣的:$('#where').before("<a id='linkId' href='#'>Link Text</a>")但這違背瞭如果你知道我的意思,那麼在插入它之前需要使用它。

在此先感謝。

回答

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> 
1

下面是它如何工作的:

$('#formId input') 
1

如果你想通過所有的輸入迴路,看看jQuery中的each() function

+0

+1教導我關於每個功能,即使我讀過它,我也忘了它。 – johnnyArt 2010-03-12 10:39:48

5

如果你希望所有的後代然後@ woland的答案作品。如果你真的只希望你的直接孩子>然後

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

Wolands匹配姓名和電話。我的火柴只是名字和姓氏

<form action='#' id='formId'> 
<input id='name' /> 
<input id='surname'/> 
<div> 
<input id='phone'/> 
</div> 
</form> 
+0

那有什麼區別? '#formId> input'應該可以完成這項工作。無論如何+1,很好的答案。 – 2010-03-12 10:44:50

+1

在CSS選擇器中,「#formId> input」和「#formId input」之間的區別在於「>」只匹配在dom中的#formId正下方的元素。 「#formId輸入」匹配任何後代。輸入可以嵌套在15個div中,它仍然會匹配。 – 2010-03-12 20:18:22