私は誰かに助けてもらい、彼はこれを思いつきました。UL からのオプションを使用して 3 つの動的選択フィルターを構築します。
$(function() {
renderNextLevel('#something > div > div');
});
function renderNextLevel(parent) {
$(parent).children('ul').each(function() {
var height = $(this).parentsUntil('#something').length;
var current = $(parent).children('ul');
var sel = $('.sel' + height);
if (sel.length == 0) {
sel = $('<select />');
sel.attr('class', 'sel' + height);
sel.attr('id', 'sel' + height);
$('#something').append(sel);
fopt = $("<option />", {
"value" : "",
"text" : "Go to...",
}).appendTo(sel);
var nextLevel = function(text, idx) {
var parents = $({});
$('#something select').each(function() {
if($(this).index() > idx){
$(this).remove();
}
});
$('#something').find('li a').each(function() {
if ($(this).text() == text) {
parents = parents.add($(this).parent());
}
});
renderNextLevel(parents);
};
sel.change(function() {
nextLevel(sel.find('option:selected').text(), sel.index());
});
}
$(this).children('li').each(function() {
var opt = $('<option />');
var link = $(this).children('a');
var optVal = link.attr("href");
var optText = link.text();
if (sel.find('option[name="' + optText + '"]').length == 0) {
sel.append(opt);
opt.attr('value', optVal);
opt.attr('name', optText);
opt.text(optText);
}
});
});
}
選択したときに URL に移動するには、最後の選択ボックス オプションが必要です。
$("#something select").change(function() {
window.location = $(this).find("option:selected").val();
});
しかし、それは機能していません。助けはありますか?