2013-06-12 103 views
1

我只是試圖選擇這些特定的「雙方」的ID。我做了一百萬次,但jQuery只是不想與我合作。無法獲取屬性,期間,在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')或任何屬性,則無關緊要。我得到同樣的錯誤,並且只在這裏發生。任何想法爲什麼?

回答

3

您需要使用

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

因爲sides[i]給不具有像.val().attr()方法DOM參考,您需要使用$(sides[i])

包裝它,而不是得到相應的jQuery對象我可以使用的for.map()

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

只是w我正在尋找的帽子。感謝您的快速和有益的迴應。 –