|
|
/* * jQuery UI Slider Access * By: Trent Richardson [http://trentrichardson.com]
* Version 0.3 * Last Modified: 10/20/2012 * * Copyright 2011 Trent Richardson * Dual licensed under the MIT and GPL licenses. * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
* http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
* */ (function ($) { $.fn.extend({ sliderAccess: function (options) { options = options || {}; options.touchonly = options.touchonly !== undefined ? options.touchonly : true; // by default only show it if touch device
if (options.touchonly === true && !("ontouchend" in document)) { return $(this); }
return $(this).each(function (i, obj) { var $t = $(this), o = $.extend({}, { where: 'after', step: $t.slider('option', 'step'), upIcon: 'ui-icon-plus', downIcon: 'ui-icon-minus', text: false, upText: '+', downText: '-', buttonset: true, buttonsetTag: 'span', isRTL: false }, options), $buttons = $('<' + o.buttonsetTag + ' class="ui-slider-access">' + '<button data-icon="' + o.downIcon + '" data-step="' + (o.isRTL ? o.step : o.step * -1) + '">' + o.downText + '</button>' + '<button data-icon="' + o.upIcon + '" data-step="' + (o.isRTL ? o.step * -1 : o.step) + '">' + o.upText + '</button>' + '</' + o.buttonsetTag + '>');
$buttons.children('button').each(function (j, jobj) { var $jt = $(this); $jt.button({ text: o.text, icons: { primary: $jt.data('icon') } }) .click(function (e) { var step = $jt.data('step'), curr = $t.slider('value'), newval = curr += step * 1, minval = $t.slider('option', 'min'), maxval = $t.slider('option', 'max'), slidee = $t.slider("option", "slide") || function () { }, stope = $t.slider("option", "stop") || function () { };
e.preventDefault();
if (newval < minval || newval > maxval) { return; }
$t.slider('value', newval);
slidee.call($t, null, { value: newval }); stope.call($t, null, { value: newval }); }); });
// before or after
$t[o.where]($buttons);
if (o.buttonset) { $buttons.removeClass('ui-corner-right').removeClass('ui-corner-left').buttonset(); $buttons.eq(0).addClass('ui-corner-left'); $buttons.eq(1).addClass('ui-corner-right'); }
// adjust the width so we don't break the original layout
var bOuterWidth = $buttons.css({ marginLeft: ((o.where === 'after' && !o.isRTL) || (o.where === 'before' && o.isRTL) ? 10 : 0), marginRight: ((o.where === 'before' && !o.isRTL) || (o.where === 'after' && o.isRTL) ? 10 : 0) }).outerWidth(true) + 5; var tOuterWidth = $t.outerWidth(true); $t.css('display', 'inline-block').width(tOuterWidth - bOuterWidth); }); } }); })(jQuery);
|