javascript - 无法在 jQuery 中获取属性、句点

标签 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' ) 或与此相关的任何属性都没有关系。我得到同样的错误,它只发生在这里。知道为什么吗?

最佳答案

你需要使用

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

因为 sides[i] 给出了一个 dom 引用,它没有像 .val().attr() 这样的方法,你需要用$(sides[i])

包装得到对应的jQuery对象

我可以使用 .map() 代替 for 循环

border = sides.map(function(idx, el){
    return $(el).val()
})

关于javascript - 无法在 jQuery 中获取属性、句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17057009/

相关文章:

尝试以 dd/mm/yy 格式打印所选日期时,jquery ui datepicker 出现问题

html - 将导航栏的内容定位到中心

javascript - 在 Angular JS 中观察全局对象的属性

javascript - 禁用 Youtube 相关视频 rel=0

Javascript - 月年范围自动在选择列表上

javascript - jQuery 语法、鼠标悬停和超时

javascript - 点击每个类项目的功能

javascript - 如何根据 URL 在 jquery 中使选项卡处于事件状态

css - 透明的 div 背景,带有淡淡的颜色?

html - CSS 将元素保持在底部的中心