我只是想选择这些特定“边”的 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' )
或与此相关的任何属性都没有关系。我得到同样的错误,它只发生在这里。知道为什么吗?
最佳答案
你需要使用
border.push( $(sides[i]).val() );
因为 sides[i]
给出了一个 dom 引用,它没有像 .val()
或 .attr()
这样的方法,你需要用$(sides[i])
我可以使用 .map() 代替 for
循环
border = sides.map(function(idx, el){
return $(el).val()
})
关于javascript - 无法在 jQuery 中获取属性、句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17057009/