jquery获取具有给定名称的div包含的所有元素

时间:2011-08-02 10:41:44

标签: javascript jquery

所以我首先要说的是我对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);             }) 未定义

这种情况持续了一段时间,具有不同的功能。有什么建议吗?

此致 波格丹

3 个答案:

答案 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 + '"]');