From e8ac2bb71b390c89493aa26440bc5bead7050178 Mon Sep 17 00:00:00 2001 From: Adam Kittelson Date: Tue, 19 Jul 2011 13:41:29 -0700 Subject: [PATCH] use a closure to bind a function to this, Prototype function.bind doesn't work in jQuery, was causing an error when blurring a select in Safari --- chosen/chosen.jquery.js | 12 ++++++++++-- coffee/chosen.jquery.coffee | 6 ++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/chosen/chosen.jquery.js b/chosen/chosen.jquery.js index 3784ff2..4a0518e 100644 --- a/chosen/chosen.jquery.js +++ b/chosen/chosen.jquery.js @@ -151,14 +151,22 @@ return this.mouse_on_container = false; }; Chosen.prototype.input_focus = function(evt) { + var binding; + binding = this; if (!this.active_field) { - return setTimeout(this.container_click.bind(this), 50); + return setTimeout((function() { + return binding.container_click(); + }), 50); } }; Chosen.prototype.input_blur = function(evt) { + var binding; if (!this.mouse_on_container) { this.active_field = false; - return setTimeout(this.blur_test.bind(this), 100); + binding = this; + return setTimeout((function() { + return binding.blur_test(); + }), 100); } }; Chosen.prototype.blur_test = function(evt) { diff --git a/coffee/chosen.jquery.coffee b/coffee/chosen.jquery.coffee index 5035e3f..4e70812 100644 --- a/coffee/chosen.jquery.coffee +++ b/coffee/chosen.jquery.coffee @@ -129,12 +129,14 @@ class Chosen mouse_leave: -> @mouse_on_container = false input_focus: (evt) -> - setTimeout this.container_click.bind(this), 50 unless @active_field + binding = this + setTimeout (-> binding.container_click()), 50 unless @active_field input_blur: (evt) -> if not @mouse_on_container @active_field = false - setTimeout this.blur_test.bind(this), 100 + binding = this + setTimeout (-> binding.blur_test()), 100 blur_test: (evt) -> this.close_field() if not @active_field and @container.hasClass "chzn-container-active"