Javascript 为什么jQuery会提高效率?

Javascript 为什么jQuery会提高效率?,javascript,jquery,Javascript,Jquery,对于ajax结果处理程序: $('.update-flight-status').on('click', function() { $.getJSON('/status', function(result) { var statusElements = $.map(result, function(status, index) { var listItem = $('<li></li>'); $('<h3>'+status.

对于ajax结果处理程序:

$('.update-flight-status').on('click', function() {
  $.getJSON('/status', function(result) {
    var statusElements = $.map(result, function(status, index) {
      var listItem = $('<li></li>');
      $('<h3>'+status.name+'</h3>').appendTo(listItem);
      $('<p>'+status.status+'</p>').appendTo(listItem);
      return listItem;
    });
$('.status-list').html(statusElements); });
$('update flight status')。在('click',function()上{
$.getJSON('/status',函数(结果){
var statusElements=$.map(结果、函数(状态、索引){
var listItem=$(“
  • ”); $(''+状态.名称+'').appendTo(列表项); $(“”+status.status+”

    ).appendTo(列表项); 返回列表项; }); $('.status list').html(statusElements);});
    及

    $('.update-flight-status').on('click', function() {
      $.getJSON('/status', function(result) {
        var statusElements = $.map(result, function(status, index) {
          var listItem = $('<li></li>');
          $('<h3>'+status.name+'</h3>').appendTo(listItem);
          $('<p>'+status.status+'</p>').appendTo(listItem);
          return listItem;
        });
        $('.status-list').detach()
                      .html(statusElements)
                      .appendTo('.status');
      });
    });
    
    $('update flight status')。在('click',function()上{
    $.getJSON('/status',函数(结果){
    var statusElements=$.map(结果、函数(状态、索引){
    var listItem=$(“
  • ”); $(''+状态.名称+'').appendTo(列表项); $(“”+status.status+”

    ).appendTo(列表项); 返回列表项; }); $('.status list').detach() .html(状态元素) .appendTo(“.status”); }); });

    为什么使用“分离”的第二个示例比第一个示例更有效?

    仅当您特别需要移动元素位置时,分离才有用且有效,或者当一次只能看到一个元素时,阻止渲染1000个项目


    您的示例没有使分离看起来有效,它看起来好像元素从一开始就被错误地定位了。

    jquery
    detach
    remove
    相同,只是它通过
    数据
    或事件处理程序将特定于jquery的分配保留到该节点。当您计划重新设置时,此方法非常方便将节点连接到DOM中的另一个点

    在第一个版本中,您确实无法判断
    状态列表
    是否是
    状态
    的子级,但在任何情况下,您都不会删除节点,因此数据、事件处理程序、分配的类等内容都会保留下来

    在第二个版本中,从DOM中删除
    状态列表
    ,然后对其进行修改,然后重新附加我想说它实际上比第一种情况慢,因为第一种情况只是修改HTML内容,而不需要分离/重新连接任何内容


    detach
    可以提高效率的情况是,如果您删除该节点,并且该节点已经进行了大量定制,添加了类、数据等……然后将其重新连接到其他位置,而不是删除节点、重新创建节点、重新分配所有内容等。

    @FelixKling我在codeschool.com上做了一个教程