2012-06-26 24 views

回答

1

它不工作,因爲你正在尋找.children('ul'),這不僅包括立即後裔,但是你的第二個navdivul纏...

你可以更改.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... 

    }); 
}); 
+0

不錯,但有時也沒有得到檢測

+0

你怎麼知道'nav'沒有被檢測到? '$('nav')'是非常直接的... – poncha

+0

我只是用find()測試它,但仍然存在同樣的問題。請你在小提琴中測試一次,因爲我處於很大的麻煩中。請檢查我的問題,我有一個小提琴鏈接。 – Subhajit