浏览代码

Merge pull request #403 from byroot/fix-perfs-issues

Fix perfs issues
Igor Vaynberg 12 年之前
父节点
当前提交
2adb8d3a78
共有 1 个文件被更改,包括 11 次插入8 次删除
  1. 11 8
      select2.js

+ 11 - 8
select2.js

@@ -40,7 +40,8 @@
         return;
     }
 
-    var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer;
+    var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,
+        lastMousePosition, $document;
 
     KEY = {
         TAB: 9,
@@ -90,6 +91,8 @@
         }
     };
 
+    $document = $(document);
+
     nextUid=(function() { var counter=1; return function() { return counter++; }; }());
 
     function indexOf(value, array) {
@@ -162,8 +165,8 @@
         });
     }
 
-    $(document).delegate("body", "mousemove", function (e) {
-        $.data(document, "select2-lastpos", {x: e.pageX, y: e.pageY});
+    $document.bind("mousemove", function (e) {
+        lastMousePosition = {x: e.pageX, y: e.pageY};
     });
 
     /**
@@ -174,7 +177,7 @@
      */
     function installFilteredMouseMove(element) {
 	    element.bind("mousemove", function (e) {
-            var lastpos = $.data(document, "select2-lastpos");
+            var lastpos = lastMousePosition;
             if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {
                 $(e.target).trigger("mousemove-filtered", e);
             }
@@ -493,16 +496,16 @@
      *
      * also takes care of clicks on label tags that point to the source element
      */
-    $(document).ready(function () {
-        $(document).delegate("body", "mousedown touchend", function (e) {
+    $document.ready(function () {
+        $document.bind("mousedown touchend", function (e) {
             var target = $(e.target).closest("div.select2-container").get(0), attr;
             if (target) {
-                $(document).find("div.select2-container-active").each(function () {
+                $document.find("div.select2-container-active").each(function () {
                     if (this !== target) $(this).data("select2").blur();
                 });
             } else {
                 target = $(e.target).closest("div.select2-drop").get(0);
-                $(document).find("div.select2-drop-active").each(function () {
+                $document.find("div.select2-drop-active").each(function () {
                     if (this !== target) $(this).data("select2").blur();
                 });
             }