我有一個風格通過生成一個div錨,列表和隱藏字段選擇輸入的功能:選擇下拉式的功能jQuery的
function selectMenu() {
var selectMenu = $("#cf-budget");
$('<input id="' + selectMenu.attr("id") + '-hidden" type="hidden" name="' + selectMenu.attr("name") + '" value="" />').insertAfter(selectMenu);
selectMenu.hide();
var selectTitle = selectMenu.children("option:eq(0)").text();
var newSelectMenu = '<div class="selectmenu"><div class="selectmenu-selected"><a rel="placeholder">'+ selectTitle +'</a></div><ul class="selectmenu-menu"><li><a rel="placeholder">'+ selectTitle +'</a></li>';
selectMenu.find("option:not(:eq(0))").each(function() {
newSelectMenu += '<li><a rel="' + $(this).val() + '">' + $(this).text() + "</a></li>";
});
newSelectMenu += "</ul></div>";
$(newSelectMenu).insertAfter(selectMenu);
var newSelectMenu = $("div.selectmenu");
$("div.selectmenu-selected a", newSelectMenu).live("click", function() {
$("ul.selectmenu-menu", newSelectMenu).toggle();
return false;
});
$("body").live("click", function() {
$("ul.selectmenu-menu", newSelectMenu).hide();
});
$("ul.selectmenu-menu a", newSelectMenu).live("click", function() {
var optionValue = $(this).attr("rel");
var optionText = $(this).text();
$("ul.selectmenu-menu", newSelectMenu).hide();
$("div.selectmenu-selected a", newSelectMenu).text(optionText);
$("#" + selectMenu.attr("id") + "-hidden").val(optionValue);
var activeMessageType = $("ul.message-type.active");
if (activeMessageType.length) {
activeMessageType.slideUp(300, function() {
$("#" + optionValue).addClass("active").slideDown(300);
}).removeClass("active");
} else {
$("#" + optionValue).addClass("active").slideDown(300);
}
return false;
});
}
$(document).ready(function() {
selectMenu();
});
我的問題是如何調整這使它爲'x'數量的選擇輸入工作?目前它只需要一個選擇的Id或類。
我猜我需要通過函數選擇ID或類名,以便它可以做到每個下拉菜單的東西?
這是好的,但我還是點擊一個選擇和其他人都responsing藏漢 –
任何選擇器不能在'selectMenu'的子節點上運行,所以需要進行修改(參見我編輯的使用'find()'的示例)。 – ach
另外,不相關,但'live()'已棄用。如果在jQuery 1.7+上,你應該使用'on()'或者在1.4.2+上使用'delegate()'。 – ach