1

我只是想选择这些特定“方面”的 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' ), 或任何属性都没关系。我得到同样的错误,它只发生在这里。知道为什么吗?

4

1 回答 1

3

你需要使用

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

因为sides[i]给出了一个没有类似.val()or方法的 dom 引用,所以.attr()您需要通过使用包装它来获取相应的 jQuery 对象$(sides[i])

我可以使用.map()而不是for循环

border = sides.map(function(idx, el){
    return $(el).val()
})
于 2013-06-12T02:59:33.300 回答