jquery - 在特定div中按标记获取元素?

时间:2010-12-14 19:17:38

标签: jquery getelementsbytagname

我正在尝试获取某个div中的所有输入元素,但它似乎返回任何给定页面上的所有输入...有没有办法做到这一点?

if($('#umi-form')) {
          var inputs = document.getElementsByTagName('input');
}

3 个答案:

答案 0 :(得分:12)

可以这样做:

var $inputs = $('#umi-form input');

答案 1 :(得分:7)

您的if()测试将始终评估true。您应该使用length中的if()属性。

var uform = $('#umi-form');
if(uform.length) {
    var inputs = uform.find('input');
}

如果您希望获得nodeList而不是jQuery对象,请执行以下操作:

var uform = $('#umi-form');
if(uform[0]) {
    var inputs = uform[0].getElementsByTagName('input');
}

答案 2 :(得分:1)

JavaScript首先......

document.getElementsByTagName( 'input' );

将获取input中的所有document"页面" )。虽然

document.getElementById( 'umi-form' ).getElementsByTagName( 'input' );

将获取input中的所有#umi-form

在这种情况下,getElementsByTagName的调用位于句点之前的元素上。如果我们在document上调用它,我们会在页面上获得带有指定标记的所有元素。如果我们在document child 元素上调用它,那么我们只从该子元素中获取带有命名标记的元素。

您将始终获取所有带有命名标记的元素,这些元素位于元素中,并调用该方法。但是,如果您只想获得其中一个,请使用

target_element.getElementsByTagName( 'tag-name' )[ index ];

其中index是返回length范围内的整数,它是通过

获得的
target_element.getElementsByTagName( 'tag-name' ).length;

由于jQuery是一个JavaScript库,因此在尝试使用jQuery IMO之前,建议您充分了解JS。