WEB开发网
开发学院网页设计JavaScript 高级 jQuery:让好的应用程序变成强大的应用程序 阅读

高级 jQuery:让好的应用程序变成强大的应用程序

 2010-01-14 00:00:00 来源:WEB开发网   
核心提示: 清单 2. 经过优化的小部件//handlestheselection/unselectionofallcheckboxesfunctionselectAll(){varchecked=$("#selectall").attr("checked");sel


清单 2. 经过优化的小部件

// handles the selection/unselection of all checkboxes 
function selectAll() 
{ 
  var checked = $("#selectall").attr("checked"); 
  selectable.unbind("click", changeNumFilters); 
  selectable.each(function(){ 
   var subChecked = $(this).attr("checked"); 
   if (subChecked != checked) 
   { 
     $(this).click(); 
   } 
  }); 
  selectable.bind("click", changeNumFilters); 
  changeNumFilters(); 
  }

通过这些优化之后,复选框的运行速度提高到约 900 毫秒,从而大大改进了性能。这些改进源于返回去检查您的算法正在做什么,以及贯穿代码的操作。您可以仅调用函数 1 次,而不是 100 次。通过在本系列的其他文章中不断改进该函数,您最后会让它变得更快、更高效。但不一定非得这么做,我还发现一个最快的算法,以前从来没有透露过。此外,如果我过早地向您展示这个最快的算法,我就不能将其作为本文的题材了。希望它能使您看到在代码中使用 bind/unbind 特性带来的好处(如果没有更好的方法的话)。

记住:在不希望触发默认事件时才使用 bind/unbind,或作为向页面元素添加或删除事件的临时方法

清单 3 显示了编写该算法的最快方法(如果您的代码中有这个小部件)。它运行该函数仅需 40 毫秒,远远胜过之前的其他方法。


清单 3. 使用超快算法的小部件

function selectAll() 
{ 
  var checked = $("#selectall").attr("checked"); 
  selectable.each(function(){ 
   $(this).attr("checked", checked); 
  }); 
  changeNumFilters(); 
  }

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:高级 jQuery 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接