2

我正在开发一个需要响应的网站。我想将导航转换为 <select>. 里面可以有任意数量<nav>和任意数量。我已经用来计算.<ul><nav>for loops<nav> and <ul> inside <nav>

一个正在生成,另一个没有生成,请帮我解决这个问题。

这是jsfiddle

4

1 回答 1

1

它不起作用,因为您正在寻找.children('ul')并且这仅包括直系后代,但是您的第二navdiv包裹在ul...

您可以更改在任何深度查找后代的.children调用.find

- 剪这里 -

替代解决方案:

$('nav').each(function(navIndex, navElement) {

    $(this).find('ul').each(function(ulIndex, ulElement) {

        var $sel = $('<select name="nav'+navIndex+'-'+ulIndex+'" />');
        $sel.append('<option value="#">Go to...</option>');
        $sel.change(function() { document.location.href = this.value; });

        $(this).find('li>a').each(function(aIndex, aElement) {
            $sel.append('<option value="' + this.href + '">' + $(this).text() + '</option>');
        });

        $(this).after($sel); // place this select after the ul...

    });
});
于 2012-06-26T10:58:08.327 回答