Jquery: 获取函数的 return 值

Jquery: getting return value of a function

我想用 jquery 创建一个基本的泛型函数,以将 html 列表的所有元素放入一个数组中。一切似乎都很好,但我在获取 return 值时遇到了一些问题。我知道这是一个基本问题,所以我希望你能帮助我解决它。

  <script>
        function listeToArrayById(idListe){ 
            $(function(){
                var listChildren = $("#" + idListe).children(); //puts all li children in var listChildren
                var arrayListChildren = [];
                $.each(listChildren, function(key, value){
                    arrayListChildren.push($(this).text());
                })
                return arrayListChildren; // here it's ok arrayListChildren = ["a", "b", "c"] 
            })
        }
        var ulChildren = listeToArrayById("list1");
        window.console.log(ulChildren); // here is my problem because ulChildren is undefined ... I should get an array ["a", "b", "c"]
    </script>
</head>
<body>
    <ul id="list1">
        <li>a</li>
        <li>b</li>
        <li>c</li>
    </ul>
    </body>

您使用的 document ready handler 有误,

function listeToArrayById(idListe){ 
     var listChildren = $("#" + idListe).children();
     var arrayListChildren = [];
     $.each(listChildren, function(key, value){
        arrayListChildren.push($(this).text());
     })
     return arrayListChildren; // here it's ok arrayListChildren = ["a", "b", "c"] 
}

$(function(){
  var ulChildren = listeToArrayById("list1");
  console.log(ulChildren); 
});

你可以像下面这样简化你的代码,

function listeToArrayById(idListe){ 
     return $("#" + idListe).children().map(function(){
           return this.textContent
     }).get();
}