不同寻常的jQuery语法让我感到困惑。内部连接$

不同寻常的jQuery语法让我感到困惑。内部连接$,jquery,Jquery,我看到这个jQuery代码: $.ajax({ type: "POST", url: "/done", data: { id: item_id }, }).done(function(data) { if(data.status == 'done') { $("#" + data.id + " a.done").text('Not done') $("#" + data.id + " .ite

我看到这个jQuery代码:

$.ajax({
      type: "POST",
      url: "/done",
      data: { id: item_id },
      }).done(function(data) {
        if(data.status == 'done') {
          $("#" + data.id + " a.done").text('Not done')
          $("#" + data.id + " .item").wrapInner("<del>");
        }
     })
这是我的DOM:

<li id="4">
  <span class="item">todo2</span>
  <span class="pull-right">            
    <a href="#" class="btn done">Done</a><a href="/delete/4" class="btn btn-danger">Delete</a>
  </span>
</li>
  • todo2
  • 因此,我认为jQuery代码获取了一个读作
    #(“#4a.done”)
    的元素,但它似乎从
    a
    链接标记、li id和从a链接完成的类中获取了一大堆内容。选择DOM元素时会发生什么

    $("#" + data.id + " a.done")
    
    评估为

    #4 a.done
    

    4
    a.done
    之间留有空格。这是在
    li
    id=“4”
    下选择所有
    a
    s,class
    done
    ,元素
    id
    基本上不应该以数字开头


    这是
    “#”+data.id+“a.done”的派生形式
    “#4 a.done”
    。在
    #4
    a.done
    之间有一个空格,表示元素具有
    a.done
    内部元素具有id
    4

    这是派生形式
    “#4 a.done”
    #4 a.done