从jQuery中的字符串值列表创建和附加DOM对象

从jQuery中的字符串值列表创建和附加DOM对象,jquery,dom,Jquery,Dom,我很困惑,也不确定我对jQuery的了解到底在哪里。有人能解释为什么这不起作用吗?(我已经设置了一个新的按钮,以便更轻松地直接跳入) 给定HTML: 和Javascript字符串: var itemString=“Item1、Item2、Item3”; 为什么以下将字符串作为LI对象追加的方法不起作用(报告的错误为“未找到”\u ERR:DOM异常8): aStrings=itemString.split(“,”); aLi=$.map($.makeArray(aStrings),函数(x

我很困惑,也不确定我对jQuery的了解到底在哪里。有人能解释为什么这不起作用吗?(我已经设置了一个新的按钮,以便更轻松地直接跳入)

给定HTML:

    和Javascript字符串:

    var itemString=“Item1、Item2、Item3”;
    
    为什么以下将字符串作为LI对象追加的方法不起作用(报告的错误为“未找到”\u ERR:DOM异常8):

    aStrings=itemString.split(“,”);
    aLi=$.map($.makeArray(aStrings),函数(x){
    返回$(“
  • ”)。文本(x); }); $(“#MyList”).append(aLi);
  • 使用$.each()是可行的(以下示例),但我对$.map方法的理解有什么问题

    aStrings=itemString.split(“,”);
    $。每个(收敛,功能(i,x){
    $(“MyList”).append($(“
  • ”).text(x)); });
  • aLi,我的数组不是LI DOM元素的真实集合吗

    提前感谢…

    来自jQuery文档:

    说明:通过函数传递当前匹配集中的每个元素,生成包含返回值的新jQuery对象

    您没有在匹配集上使用它,即
    $('someSelector').map(函数{}).doSomethingWithReturnedJQueryObject()
    。如果您将项目放在一个列表中,并希望将其移动到另一个列表中,您可以使用map函数,但我认为它不打算像您在非工作示例中那样使用

    换句话说,
    map()
    函数的使用方式与您在此处尝试使用它的方式完全相反。您可以使用它获取每个
  • 的内容,并从中构建index1、index2、index3字符串。

    来自jQuery文档:

    说明:通过函数传递当前匹配集中的每个元素,生成包含返回值的新jQuery对象

    您没有在匹配集上使用它,即
    $('someSelector').map(函数{}).doSomethingWithReturnedJQueryObject()
    。如果您将项目放在一个列表中,并希望将其移动到另一个列表中,您可以使用map函数,但我认为它不打算像您在非工作示例中那样使用


    换句话说,
    map()
    函数的使用方式与您在此处尝试使用它的方式完全相反。您可以使用它来获取每个
  • 的内容,并从中构建index1、index2、index3字符串。

    甚至没有理由将jQuery中需要的简单html包装到映射中。它会创建额外的不必要的函数调用。另外,
    aStrings
    已经是一个数组,因此不需要使用
    $.makeArray()

    试试这个:

       aStrings = itemString.split(",");
       aLi = $.map(aStrings, function(x) {
            return  "<li>" + x +"<li>";
       }).join('');
    
       $("#MyList").append(aLi);
    
    aStrings=itemString.split(“,”);
    aLi=$.map(收敛,函数(x){
    返回“
  • ”+x+“
  • ”; }).加入(“”); $(“#MyList”).append(aLi);
  • $.map
    返回一个字符串数组,该数组将
    join()
    更改为单个字符串,然后追加该字符串


    演示:

    实际上没有理由将jQuery中需要的简单html包装到映射中。它会创建额外的不必要的函数调用。另外,
    aStrings
    已经是一个数组,因此不需要使用
    $.makeArray()

    试试这个:

       aStrings = itemString.split(",");
       aLi = $.map(aStrings, function(x) {
            return  "<li>" + x +"<li>";
       }).join('');
    
       $("#MyList").append(aLi);
    
    aStrings=itemString.split(“,”);
    aLi=$.map(收敛,函数(x){
    返回“
  • ”+x+“
  • ”; }).加入(“”); $(“#MyList”).append(aLi);
  • $.map
    返回一个字符串数组,该数组将
    join()
    更改为单个字符串,然后追加该字符串


    演示:

    哈哈。很抱歉好的,jQuery有点让人困惑,因为它有两个几乎相同签名的不同函数。阅读该页面后,我同意@charlietfl给出的答案。有一些jQuery方法,例如
    map
    每个
    都可以使用不同的方法。也和jQuery的内部用法有关。哈哈。很抱歉好的,jQuery有点让人困惑,因为它有两个几乎相同签名的不同函数。阅读该页面后,我同意@charlietfl给出的答案。有一些jQuery方法,例如
    map
    每个
    都可以使用不同的方法。也与jQuery的内部用法有关。