我現在正在創建一個jQuery插件,這將一個<select>
變成一個漂亮的下拉菜單,我雖然有一點點問題,我可以得到選擇的選項頁面上,通過這樣做,問題與jQuery對象和循環
var self = $(this);
name = self.attr('name');
select_options = $(this).children();
// an array so that we can related options together
sorted_options = [];
//loop through the options sorting them into the array as we go.
for(i=0;select_options.length>i;i++) {
sorted_options.push({
'value': select_options.eq(i).val(),
'name': select_options.eq(i).text()
});
}
所以我得到的選項,然後將它們整理到一個數組,當我推這個數組我的控制檯我得到以下,
[Object { value="0", name="I'm looking for..."}, Object { value="1", name="actors"}, Object { value="2", name="presenters"}, Object { value="3", name="voice overs"}]
[Object { value="0", name="Skill"}, Object { value="1", name="actors"}, Object { value="2", name="presenters"}, Object { value="3", name="voice overs"}, Object { value="4", name="dancers"}, Object { value="5", name="accents"}, Object { value="6", name="film"}, Object { value="7", name="tv"}]
[Object { value="0", name="Gender"}, Object { value="1", name="male"}, Object { value="2", name="female"}]
我的第一個問題是我怎樣才能從數組中刪除所有值爲0的插件作爲我的插件取代從下拉列表中的第一項,如果用戶告訴它太,之前我做了一些改變,因爲我是如何得到的選項,我用下面,
options.splice(0, 1);
但選擇不再存在,所以我不能隨便刪除每個數組的第一個項目,其次我需要的價值觀和名稱添加到我的新的下拉菜單,但是我有這個問題,
我使用此代碼值的時刻追加,
for(i=0;sorted_options.length>i;i++) {
$('.dropdown dd ul').append('<li <a href="#"><span class="option">'+ sorted_options[i]['value'] + '</span><span class="value">' + sorted_options[i]['name'] + '</span></a></li>');
}
但是,這增加了我在我看到的所有3個對象第一個下拉列表的控制檯,我在控制檯中看到的第二個對象中的2個對象,以及最後一個下拉列表中的1個對象。
我需要添加的第一個對象,以第一個下拉,第二到第二和第三的第三等
非常感謝您的回答,我實現了它,但是我無法讓它正常工作,我創建了一個jsFiddle,您可以在這裏看到http://jsfiddle.net/9f8Y2/2/ – Udders