如何使我的jQuery更具体?

时间:2012-08-14 15:41:14

标签: jquery appendto

我试图只使用一次函数而不是为我需要转换为选择列表的每个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);
        });
    });

2 个答案:

答案 0 :(得分: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 :(得分: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/