所以我首先要说的是我对JS和JSQuery完全陌生。所以我遇到以下情况。该页面的结构如下:
<div id="id1">
<input name="input1" .... >
.....
</div>
<div id="id2" disabled="disabled">
<input name="input1" ....>
</div>
.....
因此,输入的名称将重复,仅在不同的div上,并且在给定时刻不会禁用一个div。我需要能够从具有给定ID的div获取具有给定名称的输入元素。我读了一下后的方法:
var inputs = $('div[id="' + parent_div +'"] input').filter(function() {
return (this.hasOwnProperty('name') && (typeof this.name != "undefined") && this.name == component_name);
});;
for (input in inputs){
alert(inputs[input]);
alert(inputs[input].name);
}
现在我希望这只返回给定的组件。然而,作为初学者,我的结果非常奇怪。警报将返回如下内容:
objectHTMLInputElement component_name ----所以第一个是正确的,但在:
之后1 未定义
对象对象 未定义
对象HTMLDocument 未定义
div [id =“data_modelHR”] input.filter(function(){ return(this.hasOwnProperty('name')&amp;&amp;(typeof this.name!=“undefined”)&amp;&amp; this.name == component_name); }) 未定义
这种情况持续了一段时间,具有不同的功能。有什么建议吗?
此致 波格丹
答案 0 :(得分:1)
这会在input
内标识为component_name
的{{1}} div
,其中包含parent_div
:
$('div[id="' + parent_div +'"]').find('input[name="' + component_name + '"]');
您只能使用一个这样的选择器:
$('div[id="' + parent_div +'"] input[name="' + component_name + '"]');
答案 1 :(得分:1)
如果要迭代它的索引元素,请不要使用foo in bar
遍历数组。
看看你会得到什么:http://jsfiddle.net/doktormolle/7qzcv/
获得索引元素0 + 1,以及jQuery对象的所有方法/属性。
使用:
for (var i=0;i<inputs.length;++i){
alert(inputs[i]);
alert(inputs[i].name);
}
或jquery-way:
inputs.each(function(i,o){alert(o);alert(o.name); })
答案 2 :(得分:0)
认为这是最简单的方法:
$('#' + parent_div + ' input[name="' + component_name + '"]');