1
0
mirror of synced 2024-11-25 14:26:03 +03:00

Improve performance on text measuring

Signed-off-by: Igor Vaynberg <igor.vaynberg@gmail.com>
This commit is contained in:
creage 2012-06-16 22:14:46 +03:00 committed by Igor Vaynberg
parent 0ff41ca512
commit 65eb7c3404

View File

@ -40,7 +40,7 @@
return; return;
} }
var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid; var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer;
KEY = { KEY = {
TAB: 9, TAB: 9,
@ -202,26 +202,25 @@
} }
function measureTextWidth(e) { function measureTextWidth(e) {
var sizer, width, var style = e.currentStyle || window.getComputedStyle(e, null);
style = e.currentStyle || window.getComputedStyle(e, null); if (!sizer){
sizer = $("<div></div>").css({ sizer = $("<div></div>").css({
position: "absolute", position: "absolute",
left: "-1000px", left: "-1000px",
top: "-1000px", top: "-1000px",
display: "none", display: "none",
fontSize: style.fontSize, fontSize: style.fontSize,
fontFamily: style.fontFamily, fontFamily: style.fontFamily,
fontStyle: style.fontStyle, fontStyle: style.fontStyle,
fontWeight: style.fontWeight, fontWeight: style.fontWeight,
letterSpacing: style.letterSpacing, letterSpacing: style.letterSpacing,
textTransform: style.textTransform, textTransform: style.textTransform,
whiteSpace: "nowrap" whiteSpace: "nowrap"
}); });
sizer.text(e.val()); $("body").append(sizer);
$("body").append(sizer); }
width = sizer.width(); sizer.text(e.val());
sizer.remove(); return sizer.width();
return width;
} }
/** /**
@ -478,7 +477,7 @@
select2.opts.element select2.opts.element
.removeData("select2") .removeData("select2")
.unbind(".select2") .unbind(".select2")
.show(); .show();
} }
}, },