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]ようなメソッドを持たないdom参照を提供するため、対応するjQueryオブジェクトをラップして取得する必要があります.val().attr()$(sides[i])

ループの代わりに.map()forを使用できます

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