Я хочу изменить стандартный ползунок JQuery UI, чтобы на ручке была стрелка, а не квадрат. я хочу использовать пользовательское изображение в качестве дескриптора.
Есть несколько обучающих программ, которые это делают:
Но я не могу заставить его работать. Следующий код приводит к неподвижному изображению ручки:
<!DOCTYPE html> <html> <head> <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" /> <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script> <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script> <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.slider.js"></script> <style type="text/css"> #myhandle {position: absolute;z-index: 100;height: 25px;width: 35px;top: auto;background: url(http://stackoverflow.com/content/img/so/vote-arrow-down.png) no-repeat;} </style> <script type="text/javascript"> $(document).ready(function(){ $("#slider").slider({handle: '#myhandle'}); }); </script> </head> <body> <div id="slider"><div id="myhandle"></div></div> </body> </html>
Как будто JQuery не подхватывает, что я хочу использовать идентификатор myhandle для дескриптора. Мне интересно: нужен ли мне плагин для JQuery, чтобы распознавать опцию handle ? (это не задокументировано в http://docs.jquery.com/UI/Slider). Или, возможно, это работало только в старой версии JQuery?
Есть идеи?
Класс CSS, который можно изменить для добавления изображения в дескриптор слайдера JQuery, называется " .ui-slider-Horizontal .ui-Slider-handle ".
Следующий код показывает демо:
<!DOCTYPE html> <html> <head> <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" /> <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script> <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script> <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.slider.js"></script> <style type="text/css"> .ui-slider-horizontal .ui-state-default {background: white url(http://stackoverflow.com/content/img/so/vote-arrow-down.png) no-repeat scroll 50% 50%;} </style> <script type="text/javascript"> $(document).ready(function(){ $("#slider").slider(); }); </script> </head> <body> <div id="slider"></div> </body> </html>
Я думаю, что регистрация опции handle была старым способом сделать это и больше не поддерживается в JQuery-ui 1.7.2?
.ui-slider .ui-slider-handle{ width:50px; height:50px; background:url(../images/slider_grabber.png) no-repeat; overflow: hidden; position:absolute; top: -10px; border-style:none; }
Если вам нужно полностью заменить ручку чем-то другим, а не просто переустанавливать ее:
Вы можете указать элементы пользовательского дескриптора, создав и добавив элементы и добавив класс ui-slider-handle перед инициализацией.
Рабочий пример
$('.slider').append('<div class="my-handle ui-slider-handle"><svg height="18" width="14"><path d="M13,9 5,1 A 10,10 0, 0, 0, 5,17z"/></svg></div>'); $('.slider').slider({ range: "min", value: 10 });
.slider .ui-state-default { background: none; } .slider.ui-slider .ui-slider-handle { width: 14px; height: 18px; margin-left: -5px; top: -4px; border: none; background: none; } .slider { height: 10px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="https://code.jquery.com/ui/1.9.1/jquery-ui.min.js"></script> <link href="https://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" /> <div class="slider"></div>
Вы также должны установить border:none для этого класса CSS.
border:none
Это изменение только первой ручки в ползунке с несколькими ручками. В apiDoc вы можете увидеть: «Например, если вы укажете значения: [1, 5, 18] и создадите один пользовательский дескриптор, плагин создаст два других.»