¸ÅÊö
ÔÚ3.0Ö÷°æ±¾ÖУ¬jQuery CoreÍŶӶÔAPI½øÐиü¸Ä¼°ÇåÀí£¬²¢ÐÞ¸´Ä³Ð©´úÂë¸ü¸ÄÒýÆðµÄbug¡£Õâ°üÀ¨É¾³ýÒÔÇ°ÆúÓõĹ«¿ªAPI£¬¸ü¸Ä»òɾ³ýδ¼Ç¼µÄAPI£¬²¢¸ü¸ÄÏÖÓÐAPIµÄ¼Ç¼»òδ¼Ç¼µÄÐÐΪÓÃÓÚÌض¨ÊäÈë¡£
ä¯ÀÀÆ÷Ö§³ÖjQuery 3.0 Ö§³ÖÒÔÏÂä¯ÀÀÆ÷£º
jQueryÍŶӲßÂÔÊÇÖ÷°æ±¾¸üÐÂÖ»Õë¶ÔÕâЩä¯ÀÀÆ÷£¬ËùÒÔÕâ¸öä¯ÀÀÆ÷ÁбíÖÁÉÙÖ§³Öµ½jQuery 4¡£
jQuery Migrate ²å¼þÓëjQuery 1.9 / 2.0ÖеÄÖ÷Òª¸ü¸ÄÒ»Ñù£¬ÎÒÃÇÒѾ´´½¨ÁËÒ»¸öа汾µÄ,ÒÔ¼ò»¯¾É´úÂëǨÒƵ½3.0°æ±¾¡£ÎÒÃÇÇ¿ÁÒ½¨ÒéÄúʹÓÃÕâ¸ö²å¼þ×÷ΪÉý¼¶¹¤¾ß£¬Ëü½«¸ø³ö ¿ÉÄÜÓ°ÏìÄúµÄ´úÂëµÄ¹ØÓÚ´ó¶àÊýÖ÷Òª¸ü¸ÄµÄ¾ßÌ彨Òé¡£
jQuery Migrate²å¼þ 3.0 °æ±¾£¬²»»á¾¯¸æ»ò»Ö¸´ÒÔÇ°Ö÷°æ±¾¸ü¸Ä£¨ÈçjQuery 1.9 / 2.0£©ÖÐɾ³ýµÄÐÐΪ¡£Ê¹ÓÃÒÔϲ½Öè´Ó 1.11.0 »ò 2.1.0 ֮ǰµÄjQuery°æ±¾Éý¼¶µ½3.0а汾£º
²»Ö§³ÖÔÚͬһҳÃæÉÏͬʱÔËÐÐMigrate 1.xºÍMigrate 3.x¡£
µ±Ê¹ÓÃÌض¨µÄ¹ýʱºÍ/»òÒƳýµÄÌØÕ÷ʱ£¬Migrate²å¼þµÄδѹËõ¿ª·¢°æ±¾»áÔÚ¿ØÖÆ̨ÈÕÖ¾ÖÐÊä³öÒÔ¾¯¸æ¡£ÔÚ²éÕÒºÍÐÞ¸´ÏÖÓÐjQuery´úÂëºÍ²å¼þÖеÄÎÊÌâµÄʱºò£¬ËüºÜÓÐÓ㬿ÉÒÔ×÷ΪǨÒƵ÷ÊÔ¹¤¾ß¡£
Migrate²å¼þµÄѹËõ°æ±¾²»»áÉú³ÉÈκξ¯¸æ£¬È»¶øËü·¢³öÒ»¸öµ¥¶ÀµÄ¿ØÖÆ̨ÏûÏ¢£¬¸æËßÎÒÃÇËüÒѾ±»°²×°ÒýÓã¬ÒÔ¼ò»¯µ÷ÊÔ¡£jQuery 3.0»ò¸ü¸ß°æ±¾µÄÉú²úÕ¾µãÉÏ¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèҪʹÓÃMigrate²å¼þ£¬µ«¶ÔÓھɵIJ»¼æÈݵÄjQuery´úÂë»ò²å¼þÒ²±ØÐëʹÓá£ÀíÏëÇé¿öÏ£¬ÕâÖ»ÊÇ×÷Ϊһ¸ö¶ÌÆÚ½â¾ö·½°¸£¬ÒòΪ»Ö¸´¾ÉµÄÐÐΪ¿ÉÄܻᵼÖÂÓëÔ¤ÆÚÐÂÐÐΪµÄÐÂjQuery´úÂëµÄ³åÍ»¡£
ÖØÒª±ä¸üÕªÒªjQuery×÷Ϊһ¸ö¹ã·ºÊ¹ÓõÄÀà¿â£¬ÍŶÓͨ³£ºÜÄÑÖªµÀÔÚ·¢²¼Ö®Ç°ÄÄЩ¸ü¸Ä¿ÉÄÜ»áÓ°Ïìµ½¿ª·¢ÈËÔ±¡£¾¡¹ÜÕâ·ÝÃûµ¥ºÜ³¤£¬ÎÒÃÇÈÏΪ´ó¶àÊýÊDZßÔµ°¸Àý¡£Ðí¶àjQueryÏîÄ¿Ó¦¸ÃÄܹ»ÔËÐÐ3.0°æ±¾£¬Èç¹ûÓÐÎÊÌâµÄ»°£¬Ò»°ãÖ»Òª×öÇá΢µÄ¸ü¸Ä¡£
ͨ¹ýÆä×é¼þÀà±ðÁгö¸ü¸Ä£¬²¢ÒÔǰ׺ÃèÊö£¬ÒÔ°ïÖúÄúÁ˽âÆäÓ°Ï죺
Çë¼Çס£¬ÉÏÊöµÄjQuery Migrate²å¼þ¿ÉÒÔ¼ì²âºÍ¾¯¸æÕâЩ¸ü¸Ä£¬ÒÔ±ãËüÃÇ¿ÉÒÔÔÚÏÖÓеĴúÂëÖÐÐÞ¸´¡£
ÓйØËùÓдúÂë¸ü¸ÄµÄÍêÕûÏêϸÁÐ±í£¬Çë²ÎÔÄ jQuery CoreÎÊÌâ¸ú×ÙÆ÷ ÖеÄ3.0¹æ»® »ò°æ±¾²îÒì¡£
Ajax ¸ü¸Ä£ºÌØÊâÇé¿öµÄDeferred·½·¨´ÓjQuery.ajaxÖÐɾ³ý´ÓjQuery.ajax()·µ»ØµÄjqXHR¶ÔÏóÊÇÒ»¸öjQuery Deferred,²¢ÇÒÀúÊ·ÉÏÓÐÈý¸öÃû³ÆÓë²ÎÊý¶ÔÏóµÄsuccess, error, ºÍ complete ÏàÆ¥ÅäµÄ¶îÍâµÄ·½·¨¡£Õâ¾³£ÈÃÈËÀ§»ó,·µ»ØµÄ¶ÔÏóÓ¦¸ÃÏñDeferredÒ»Ñù´¦Àí¡£´ÓjQuery 3.0¿ªÊ¼£¬ÕâЩ·½·¨Òѱ»É¾³ý¡£×÷ΪÌæ´ú£¬Ê¹ÓÃDeferred±ê×¼µÄdone£¬failºÍalways·½·¨£¬»òÕßʹÓÃеķûºÏPromises/A+¹æ·¶µÄthen ºÍ catch ·½·¨ ¡£
×¢Òâ,Õâ¶Ôͨ¹ýoptions¶ÔÏ󴫵ݵÄͬÃûµÄajax»Øµ÷¸ù±¾Ã»ÓÐÈκÎÓ°Ï죬ËüÃǼÌÐø´æÔÚ²¢ÇÒ²»»á±»ÆúÓá£ÕâÖ»Ó°ÏìjqXHR·½·¨¡£
https://github.com/jquery/jquery/issues/2084
¸ü¸Ä£º¿çÓò½Å±¾ÇëÇó±ØÐëÉùÃ÷ͨ¹ýjQuery.ajax()»òjQuery.get()ÇëÇó¿çÓò½Å±¾µÄʱºò,ÄúÏÖÔÚ±ØÐëÔÚÑ¡ÏîÖÐÏÔʽָ¶¨dataType: "script"¡£ÕâÊÇΪÁË·ÀÖ¹Ô¶³ÌÕ¾µãÌṩ·Ç½Å±¾ÄÚÈݹ¥»÷µÄ¿ÉÄÜÐÔ£¬µ«ÉÔºó¾ö¶¨Ìṩ¾ßÓжñÒâÒâͼµÄ½Å±¾¡£ÓÉÓÚjQuery.getScript()ÏÔʽÉèÖÃdataType: "script"£¬ËùÒÔËü²»Êܴ˸ü¸ÄµÄÓ°Ïì¡£
¸ü¸Ä£ºURLÖÐµÄ hash ±£´æÔÚjQuery.ajax()µ÷ÓÃÖÐjQuery.ajax()·½·¨²»ÔÙ×Ô¶¯É¾³ýURLÖÐÌṩµÄ hash Öµ£¬²¢½«ÍêÕûµÄURL·¢ËÍ´«Ê䣨xhr£¬script£¬jsonp»ò×Ô¶¨Òå´«Ê䣩¡£Èç¹û·þÎñÆ÷¶ËÎÞ·¨´¦ÀíURLÉϵÄhash£¬ÇëÔÚ·¢ËÍÇëÇó֮ǰɾ³ýËü¡£
https://github.com/jquery/jquery/issues/1732
¹¦ÄÜ£ºjQuery.get()ºÍjQuery.post()Ôö¼ÓеÄÇ©ÃûjQuery 3 ͨ¹ýÌí¼Ósettings²ÎÊý,ΪjQuery.get()ºÍjQuery.post()º¯ÊýÌí¼ÓÁËÒ»¸öеÄÇ©Ãû¡£ ËüÊÇÒ»¸ö¶ÔÏ󣬿ÉÒÔÓµÓÐÐí¶àÊôÐÔ,ËüºÍÄãÌṩ¸øjQuery.ajax( [settings ] )µÄsettings ¶ÔÏó»ù±¾Ïàͬ(ÓÞÈËÂëÍ·×¢£º typeÑ¡Ï×Ô¶¯ÉèÖÃΪGET£»Áí£ºÊµ¼ÊÉÏÕâ¸öÇ©ÃûµÄÌí¼Ó°æ±¾Îª1.12/2.2)¡£
https://github.com/jquery/jquery/issues/1986
ÊôÐÔ(Attribute) ¸ü¸Ä£º.removeAttr()²»ÔÙÉèÖà property£¨ÌØÐÔÖµ£© Ϊ falseÔÚjQuery 3.0֮ǰ£¬ÔÚ²¼¶ûÊôÐÔ£¨ÀýÈçchecked, selected, »òÕß readonly£©ÉÏʹÓÃ.removeAttr()·½·¨£¬½«»áÉèÖÃÆäÃû³ÆÏàÓ¦µÄ property£¨ÌØÐÔ£©Îªfalse¡£´ËÐÐΪÔÚInternet ExplorerµÄ¾É°æ±¾ÉÏÊDZØÐèµÄ£¬µ«¶ÔÓÚÏÖ´úä¯ÀÀÆ÷ÊDz»ÕýÈ·
ÒòΪÊôÐÔ£¨attribute£©±íʾ³õʼֵ£¬²¢ÇÒ property£¨ÌØÐÔ£©±íʾµ±Ç°£¨¶¯Ì¬£©Öµ¡£
ÔÚDOMÔªËØÉÏʹÓÃ.removeAttr( "checked" )¼¸ºõ×ÜÊÇ´íÎó¡£Î¨Ò»¿ÉÄÜÓÐÓõÄÇé¿öÊÇ£¬DOMÒÔºóÒª±»ÐòÁл¯»ØHTML×Ö·û´®¡£ÔÚËùÓÐÆäËûÇé¿öÏ£¬Ê¹ÓÃ.prop( "checked", false )´úÌæ¡£
https://github.com/jquery/jquery/issues/1759
https://github.com/jquery/jquery/issues/2913
¸ü¸Ä£º¶àÑ¡ÏÂÀ¿ò£¨select-multiple£©²»Ñ¡ÔñÑ¡Ï·µ»Ø¿ÕÊý×éÔÚjQuery 3.0֮ǰ£¬ÔÚδѡÔñÈκÎÑ¡ÏîµÄ <select multiple> ÔªËØÉϵ÷ÓÃ.val()·µ»Ønull¡£ÕâÊDz»·½±ãµÄ£¬ÒòΪÈç¹ûÑ¡ÔñÖÁÉÙÒ»¸öÑ¡Ï·µ»ØÖµ½«ÊÇÒ»¸öÊý×é¡£´ËÍ⣬Èç¹ûËùÓÐÑ¡Ï±»½ûÓã¬jQuery·µ»ØÖµ½«ÊÇÒ»¸ö¿ÕÊý×顣ΪÁËÌá¸ßÒ»ÖÂÐÔ£¬ÎÞÑ¡ÏîÑ¡ÔñµÄÇé¿öÏÂÏÖÔÚ·µ»ØÒ»¸ö¿ÕÊý×é¡£
https://github.com/jquery/jquery/issues/2562
¹¦ÄÜ£ºSVGÎĵµÖ§³ÖÀàÃû£¨class£©²Ù×÷SVG´ÓÀ´Ã»Óб»jQueryÍêÈ«Ö§³Ö£¬²¢ÇÒÕâµãÔÚjQuery 3ÖÐûÓиı䡣¾¡¹ÜÈç´Ë£¬Ðí¶àjQuery·½·¨Ò²¿ÉÒÔÔÚSVGÎĵµÉÏʹÓᣴÓjQuery 3¿ªÊ¼£¬²Ù×÷ÀàÃûµÄ·½·¨£¬ÀýÈç .addClass() ºÍ .hasClass()£¬Ö§³ÖSVG¡£
https://github.com/jquery/jquery/issues/2199
ÆúÓ㺲»´ø²ÎÊýµÄ .toggleClass() ºÍ .toggleClass( Boolean )ËäÈ»Îĵµ¼Ç¼ÁËÕâÁ½ÖÖÇé¿öµÄÇ©Ãû£¬Æäʵ¼ÊÐÐΪ´ÓδÍêÈ«¶¨Òå¡£Õâ¸ö²»Ã÷È·µÄÐÐΪÏÖÔÚÒѱ»·ÏÆú£¬Òò´Ë²»»á±»¼Ç¼¡£Äú¿ÉÄܻᷢÏÖÄú²»Ð¡ÐÄʹÓÃÁ˸ù¦ÄÜ£¬ÒòΪ.toggleClass( undefined )µÄÐÐΪºÍûÓвÎÊýµÄµ÷ÓÃÊÇÏàͬµÄ£¬¼´Ê¹ËüÊÇÎÞЧµÄÊäÈë¡£
»Øµ÷£¨ Callback £© ¹¦ÄÜ£ºSVGÎĵµÖ§³ÖÀàÃû£¨class£©²Ù×÷Èç¹ûÒ»¸ö»Øµ÷¶ÔÏóÓÐÒ»¸ö´¦Àíº¯ÊýÔÚ.fire()Ö®ºóµ÷ÓÃ.lock()·½·¨£¬ËüÖ»×èֹδÀ´Ö´Ðлص÷ÁÐ±í²¢ÇÒ²»Á¢¼´ÖÐÖ¹µ±Ç°ÁбíµÄÖ´ÐС£ÒªÍ£Ö¹µ±Ç°Ö´ÐУ¬ÇëʹÓÃstopOnFalseÑ¡Ïî¡£
https://github.com/jquery/jquery/issues/1990
Core ¸ü¸Ä£º ÔÚÑϸñģʽÏÂÔËÐÐjQuery 3.0
¡¡