0

我正在使用 jQuery 循环遍历许多 Select Option html 元素,并且我可以让它一次工作一个,但是如果数据存储在 jQuery 元素中,我将难以访问数据。

例如我有这些 2 Select html 元素

var lList = $(".p1_lSelect");

var rList = $(".p1_rSelect");

我可以通过以下方式获得我想要的输出

$(".p1_lSelect option:selected").each(function() {
    selected = $(this).text(); //selected == "p1_lSelect_Data"
    console.log(selected);
});

$(".p1_rSelect option:selected").each(function() {
    selected = $(this).text(); //selected == "p1_rSelect_Data"
    console.log(selected);
});

//Console logs .p1_lSelect_Data and .p1_rSelect_Data as expected

我想要的是类似于以下内容的内容,以便我可以更改要输入循环的列表

function foo(){
    var lList = $(".p1_lSelect");
    var rList = $(".p1_rSelect");
    bar(lList);
    bar(rList);
}

function bar(list){
    $("list option:selected").each(function() {
        selected = $(this).text();
        console.log(selected);
    });
    //Console log does not print
}

我该怎么做呢?

4

3 回答 3

1

您可以传递列表的名称并将其附加到选择器,如下所示:

function foo(){
    bar("p1_lSelect");
    bar("p1_rSelect");
}

function bar(list){
    $(`.${list} option:selected`).each(function() {
        selected = $(this).text();
        console.log(selected);
    });
    //Console log does not print
}
于 2020-06-17T21:58:38.113 回答
1

请根据您的结构尝试以下代码:

function foo(){
    var lList = $(".p1_lSelect");
    var rList = $(".p1_rSelect");
    bar(lList);
    bar(rList);
}

function bar(list){
    $(list).find("option:selected").each(function() {
        selected = $(this).text();
        console.log(selected);
    });
    //Console log does not print
}
于 2020-06-17T21:59:23.017 回答
0

使用find()方法:

function bar(list) {
    list.find("option:selected").each(function() {
        console.log($(this).text());
    });
});
于 2020-06-17T21:59:15.217 回答