jQuery 1.3.2已於2/20釋出,跟1.3.1差不多,以修Bug為主,但也有一些改變,整理以下:

  • $("h1,h2,h3")的寫法,原本得到的群組會先列出所有的h1, 再來是所有的h2,再來是h3;1.3.2起則會依照元素在DOM中的出現順序排列。這個修改是為了符合W3C的Selector API規範
  • .live()可以支援event.stopPropagation()或return false,防止事件浮到上層元素。
  • :visible/:hidden改變做法,過去以display:none或visibility:hidden判定,1.3.2+改用offsetWidth/offsetHeight是否為0判別,一方面速度變快N倍,另一方面,被藏在hidden中的元素也能被判為hidden。
  • height(), width(), innerHeight(), innerWidth(), outerHeight(), outerWidth()調整過,速度快了N倍。
  • Sizzle selector engine在IE6下的表現加快22%。
  • appentTo(), pretendTo(), insertBefore(), insertAfter(), replaceAll()改為傳回所有加入後的元素,而非原本的元素。如果若元素被複製多份加在多處,之後串接API的處理對象會包含全部新加入的分身。

另外,在Bug Tracker的1.3.2修復清單中,也可以查到我先前通報的#3254 Defective cloned object也在本版中修復了。這樣我就算是參與了jQuery的發展史,哇哈哈哈~~~ (自High中...)


Comments

# by Ike

:visible/:hidden 改寫後,我發現一個問題… 在將 tr 以 .hide() 方式隱藏後,使用 $("tr:visible").length 來取得非隱藏 tr 數量會有誤差,不知道黑大對於「取得非隱藏 tr 數」的方式有沒有好建議? P.S. 在 1.3.1 之前的版本是正常的

# by Jeffrey

to lke, 我想這是個bug(http://www.mail-archive.com/jquery-dev@googlegroups.com/msg04115.html),Sizzle.selectors.filters.visible = function(elem){ return elem.offsetWidth > 0 || elem.offsetHeight > 0; };的檢測方法,在IE8上,隱藏的tr還是會有offsetWidth,所以就誤判了。至於是否算是IE8未照HTML規格走,則是另一個問題。

# by Ike

感謝您的回覆,希望能有某一方來解決這個 Bug ^^" 補充一下,在 IE7 也會這樣。

# by Ike

很高興這個問題在 1.4 裡解決了 ^^

Post a comment


63 + 29 =