在jQuery中无法获取属性,句点

时间:2013-06-12 02:57:32

标签: javascript jquery html

我只是想选择这些特殊“边”的ID。我已经完成了一百万次,但jQuery根本就不想和我合作。

$( 'input[name="fd-border"]' ).change(function() {
    var border = [];
    var sides  = $( 'input[name="fd-border"]' );
    var length = sides.length;
    if ( length == 0 ) {
        border = [ 'top', 'bottom', 'left', 'right' ];
    } else {
        for ( i = 0; i < length; ++i ) {
            border.push( sides[i].val() );
        }
    }

以上查询返回以下数组:

[
<input type=​"checkbox" id=​"fd-border-top" name=​"fd-border" value=​"top" class=​"ui-helper-hidden-accessible">​, 
<input type=​"checkbox" id=​"fd-border-bottom" name=​"fd-border" value=​"bottom" class=​"ui-helper-hidden-accessible">​, 
<input type=​"checkbox" id=​"fd-border-left" name=​"fd-border" value=​"left" class=​"ui-helper-hidden-accessible">​, 
<input type=​"checkbox" id=​"fd-border-right" name=​"fd-border" value=​"right" class=​"ui-helper-hidden-accessible">​
]

我一直在TypeError: 'undefined' is not a function (evaluating 'sides[i].val()')。如果我想使用.val().attr( 'id' )或任何属性,则无关紧要。我得到了同样的错误,它只发生在这里。知道为什么吗?

1 个答案:

答案 0 :(得分:3)

您需要使用

border.push( $(sides[i]).val() );

因为sides[i]给出了一个没有.val().attr()等方法的dom引用,你需要通过使用$(sides[i])

我可以使用.map()

代替for循环
border = sides.map(function(idx, el){
    return $(el).val()
})