使用每个 class 名称创建数组

create array using each class name

我正在尝试通过访问名为 'name' 的 class 创建一个数组。但是,当我提醒阵列时,我只能在一个块中获得名称列表。我想我可能使用了 .each() 错误。我想要 return 一个单独列出名称的数组。我将不胜感激任何帮助!

jquery

    $('.dropdown-content ul li span').click(function(){
        $('.hiddenfield').val($(this).html());
            $('form').submit(function(){
            var arr=[];
            $('.name').each( function()
                arr.push(('.dropdown-content').val($(this).text()));
                alert(arr);
            })
    });
    });

您可以像下面那样使用 map() 函数。将 clicksubmit 事件分开。

$('form').submit(function(){
    var arr=[];
    var arr = $('.name').map( function()
        return $(this).text();              
    }).get();
    alert(arr);
});

$('.dropdown-content ul li span').click(function() {
    $('.hiddenfield').val($(this).html());
});

两个问题:

  1. submit 事件处理程序不应嵌套在 click 处理程序中。每次单击 <li> 时,这将在表单上绑定一个新的 submit 事件。
  2. 下面代码中突出显示的语法错误

代码:

$('.dropdown-content ul li span').click(function () {
    $('.hiddenfield').val($(this).html());
});

$('form').submit(function () {
    var arr = [];
    $('.name').each(function () { // <-- Missed { here
        arr.push($('.dropdown-content').val($(this).text()));
        //       ^        Missed `$` here
        alert(arr);
    });
});

要获取文本数组,可以使用$.map with $.get

var arr = $('.name').map(function () {
    return $.trim($(this).text()); // Use trim to remove leading and trailing spaces
}).get();