我有一个风格通过生成一个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