我正在製作一個選擇菜單插件來替換醜陋的默認選擇,並且在不同操作系統中保持一致。使用jQuery在選擇菜單中添加選定的屬性
這裏的演示(僅適用於火狐和WebKit)
http://spacirdesigns.com/selectMenu/
它已經工作,但我分配「選擇」屬性選項有問題。該代碼適用於任何其他屬性,但我無法使其與所選屬性一起使用。
這工作:
select.find('option')
.removeAttr('whatever')
.eq(index).attr('whatever', 'hello');
這不:
select.find('option')
.removeAttr('selected')
.eq(index).attr('selected', 'selected');
下面是到目前爲止的代碼:
(function($){
$.fn.selectMenu = function() {
var select = this;
select.hide();
var title = select.attr('title');
var arrow = 'img/arrow.png';
var items = '';
select
.children('option')
.each(function(){
var item = $(this).text();
if ($(this).val() != '') {
$(this).attr('value', item);
}
items += '<li>' + item + '</li>'
});
var menuHtml =
'<ul class="selectMenu">' +
'<img src="' + arrow + '" alt=""/>' +
'<li>' + title + '</li>' +
'<ul>' + items + '</ul>' +
'</ul>';
select.after(menuHtml);
var menu = $(this).next('ul');
var list = menu.find('ul');
menu
.hover(function(){}, function(){
list.hide();
})
.children('li').hover(function(){
list.show();
});
menu.find('ul li').click(function(){
var index = $(this).index();
menu.children('li').text($(this).text());
select.find('option')
.removeAttr('selected')
.eq(index).attr('selected', 'selected');
list.hide();
});
};
})(jQuery);
您是否嘗試過使用'.attr('selected',true)'? – NT3RP 2011-04-26 13:13:39
我知道這個插件支持:http://programmingdrunk.com/current-projects/dropdownReplacement/#use – mkoryak 2011-04-26 13:15:29
'.attr('selected',true)'也不起作用。 – elclanrs 2011-04-26 13:17:55