我只是想选择这些特殊“边”的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' )
或任何属性,则无关紧要。我得到了同样的错误,它只发生在这里。知道为什么吗?
答案 0 :(得分:3)
您需要使用
border.push( $(sides[i]).val() );
因为sides[i]
给出了一个没有.val()
或.attr()
等方法的dom引用,你需要通过使用$(sides[i])
}来包装它来获取相应的jQuery对象。 p>
我可以使用.map()
代替for
循环
border = sides.map(function(idx, el){
return $(el).val()
})