2012-08-14 56 views
0

我想只使用一次函數,而不是寫入UL LI的每個塊,我需要轉換爲選擇列表。我的工作代碼是http://jsfiddle.net/qqzB5/如何讓我的jQuery更具體?

我試過,但它會遍歷所有的裏的,而不僅僅是特定部分內的一個:

$('.filterSection').each(function(){ 

     $('<select class="locationFilterSelect" />').appendTo(this); 
     //Create Default option "Select One" 
     $("<option />", { 
      "selected": "selected", 
      "value" : "", 
      "text" : "Select One" 
     }).appendTo('select', this); 
     // Populate dropdown with menu items 
     $('li', this).each(function() { 
      var el = $(this); 
      $("<option />", { 
       "text" : el.text() 
      }).appendTo('select', this); 
     }); 
    }); 

回答

2

您與.appendTo搞砸。它需要一個參數,不是嗎?您需要使用一些範圍:從外部處理程序到內部處理程序傳遞select變量。看看這個代碼:

$('.filterSection').each(function(){ 
    var select = $('<select class="locationFilterSelect" />') 
    select.appendTo(this); 
    //Create Default option "Select One" 
    $("<option />", { 
     "selected": "selected", 
     "value" : "", 
     "text" : "Select One" 
    }).appendTo(select); 
    // Populate dropdown with menu items 

    $(this).find('li').each(function() { 
     var el = $(this); 
     $("<option />", { 
      "text" : el.text() 
     }).appendTo(select); 
    }); 
}); 

1
$('.filterSection').each(function(){ 
     var section = $(this); 
     var select = $('<select class="locationFilterSelect" />') 
     select.appendTo(section); 
     //Create Default option "Select One" 
     $("<option />", { 
      "selected": "selected", 
      "value" : "", 
      "text" : "Select One" 
     }).appendTo(select); 
     // Populate dropdown with menu items  
     $(this).find('li').each(function(i,el) { 
      $("<option />", { 
       "text" : $(el).text() 
      }).appendTo(select); 
     }); 
    }); 

http://jsfiddle.net/tL5tD/