2010-12-07 24 views
1

爲什麼會出現:爲什麼我得到Uncaught TypeError:Object#<an HTMLSelectElement>沒有方法'find'?

Uncaught TypeError: Object # has no method 'find' (anonymous function):8080/twolittlesheep/js/sizeColorDependancy.js:16 c.event.handleajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:63 c.event.add.h.handle.oajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:56

當我嘗試運行一個簡單的jQuery腳本?腳本落在這裏我使用了find方法,在未來的jQuery代碼片段行:

$(document).ready(function(){ 
    $("select#p_sizesId").change(function(){ 
    var $colorsSelect = $("select#p_colorsId")[0]; 
    $("select#p_colorsId")[0].find('option').remove().end().append('<option selected="selected" value="whatever">text</option>'); 
    }); 
}); 

在HTML我的頭標記,我有:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
<%-- <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script> --%> 
<script type="text/javascript" src="js/sizeColorDependancy.js"></script> 

我使用谷歌瀏覽器(與開發人員工具一起)。

我在另一個線程中發現的所有解釋都是在使用Chrome的開發人員工具時出現問題。但是我在不使用開發工具的情況下運行代碼,並且發生了同樣的情況(腳本沒有做任何事情=>發生了錯誤)。

親切的問候,
暴君

+0

爲什麼您使用[0]?因爲這個元素有一個ID不會有一個集合迭代... – 2010-12-07 13:10:45

+0

@ToonMariner - 當我調試時,我看到DOM選擇對象是在一個數組內,所以我錯誤地推測,我需要從第一個對象數組... – despot 2010-12-07 17:13:26

回答

6

當你做[0]你要選擇的DOM元素,而不是一個jQuery對象具有.find(),相匹配的第一個元素只是刪除[0],像這樣:

$(document).ready(function(){ 
    $("#p_sizesId").change(function(){ 
    $("#p_colorsId").find('option').remove().end().append('<option selected="selected" value="whatever">text</option>'); 
    }); 
}); 

其他一些注意事項,如果使用#id選擇器,除非絕對需要,否則它不會加上前綴,它會減慢速度。此外,因爲ID應該是唯一的,所以應該不需要獲得第一個元素...選擇器應該只匹配1或0個元素...如果他們是而不是唯一,請不要使用ID .. .use類。

1

只是使之成爲一個jQuery對象是這樣的:

$($("select#p_colorsId")[0]).find('option') 
相關問題