0

我试图只使用一次函数,而不是为我需要转换为选择列表的每个 UL LI 块编写它。我的工作代码在http://jsfiddle.net/qqzB5/

我试过了,但它会遍历所有 li,而不仅仅是特定部分中的那个:

$('.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);
        });
    });
4

2 回答 2

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);
    });
});

​</p>

于 2012-08-14T15:48:48.727 回答
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/

于 2012-08-14T15:53:52.790 回答