对不起,如果这已经发布了,我一直在寻找无济于事..
我只想知道如何在 jquery 中遍历嵌套表单“元素”(元素不仅是严格的表单元素,如输入标签,还包括其他 html 元素)。
目前我有这段代码来做到这一点:
$('#'+arguments[i].formid).children().each(function(){
var child = $(this);
alert(child.attr('id'));
if(child.is(":input")) { alert(child.attr('id'));
if(child.attr('id')!='') eval("p."+child.attr('id')+"='"+child.attr('value')+"'");
}
if(child.is(":textarea")) {
if(child.attr('id')!='') eval("p."+child.attr('id')+"='"+child.attr('value')+"'");
}
});
当我的表单包含其他元素时,它不起作用:
<form>
<div id='tabs'>
<ul>...</ul>
<div id='tab-1'>
<input type='text' id='fname' />
<textarea id='desc' ></textarea>
</div>
</div>
</form>
请帮忙...
最佳答案
你可以在递归函数中做到这一点。
function doStuff(child) {
if(child.is(":input")) {
...
}
if(child.is(":textarea")) {
...
}
}
function walk(children) {
if (typeof children == "undefined" || children.size() === 0) {
return;
}
children.each(function(){
var child = $(this);
if (child.children().size() > 0) {
walk(child.children());
}
doStuff(child);
}
}
walk($('#'+arguments[i].formid).children());
编辑 :我刚刚想通了,你想要做什么,你可以把它分解成这个
var p = {};
$('#'+arguments[i].formid + " input[id], #"+arguments[i].formid + " textarea[id]").each(function(){
var child = $(this);
p[child.attr("id")] = child.attr("value");
});
您可能应该阅读更多关于 jQuery selectors 的信息。
关于jquery - 遍历 jquery 中的嵌套表单元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1617694/