var WallpaperPicker = UploadView.extend({ el: ".wallpaper", uploadAction: "/api/wallpaper/upload", events: { "click .swatch": 'pick', }, initialize: function(){ this.$swatches = this.$(".swatches") }, loaded: false, load: function(){ }, add: function (url) { var swatch = document.createElement("div") swatch.className = "swatch" swatch.style.backgroundImage = "url(" + url + ")" this.$swatches.append(swatch) }, toggle: function (state) { this.$el.toggleClass("active", state) // toggle the class that makes the cursor a paintbucket // $("body").removeClass("pastePaper") }, show: function(){ this.toggle(true) }, hide: function(){ this.toggle(false) }, pick: function(e){ var $swatch = $(e.currentTarget) var $floatingSwatch = $(".floatingSwatch") $floatingSwatch.css('background-image', $swatch.css('background-image')) Scenery.nextWallpaper = $swatch.css('background-image') setTimeout(function(){ function _followCursor(e) { $floatingSwatch.css({ top: (e.pageY + 10) + 'px', left: (e.pageX + 10) + 'px' }); } $(window).on('mousemove', _followCursor); $(window).one('click', function () { $(window).off('mousemove', _followCursor); $floatingSwatch.hide(); }); $floatingSwatch.show() _followCursor(e); }) }, })