css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
16 Янв
Если Вы уже немного познакомились с библиотекой jQuery, может быть уже скачали ее и немного помучали, давайте перейдем к чисто практической части и попробуем создать слайдер на основе плагина, включенного в состав библиотеки. Что такое слайдер? Может быть при своих путешествиях по сети Вы уже встречали что-то вроде линейки с одним или двумя «ползунками», которые пользователь может перемещать с помощью мыши, выбирая таким образом значение (диапазон значений) чего-либо. Внимание! Эта статья устарела! Новую статью можно почитать здесь.
На сайте разработчиков приведен пример того, как просто это сделать:
$("#example").slider();
Но конечно же далеко не все так просто. Для начала посмотрите пример того, как это работает, а затем мы разберем по шагам весь код, который обеспечивает работу слайдера.
Вы можете сохранить исходный код примера и при наличии у Вас библиотеки jQuery, воспроизвести его на своем сайте.
А теперь давайте разберем код. Я буду приводить только те блоки кода, на которые необходимо обратить внимание и сразу же давать пояснения, опуская незначительные в данном примере детали.
Итак, в разделе HEAD нашей страницы необходимо подключить четыре файла. Вот так:
<script type="text/javascript" src="js/jquery-1.2.1.js"></script> <script type="text/javascript" src="js/jquery.dimensions.js"></script> <script type="text/javascript" src="js/ui.mouse.js"></script> <script type="text/javascript" src="js/ui.slider.js"></script>
Здесь первым подключается собственно библиотека jQuery, затем плагин, который отвечает за работу с размерами элементов, далее – файл, выполняющий обработку событий мышки и наконец тот самый файл, который и позволит нам создать свой слайдер.
Далее в этом же разделе HEAD включена таблица стилей. Здесь Вы можете творить, что душе угодно, но обратите особенное внимание на классы .ui-slider и .ui-slider-handle. Их не стоит переименовывать, так как именно с этими классами работает файл ui.slider.js. Все остальное не так важно – это уже дело вкуса.
Ну и наконец мы добрались до самого интересного места – кода, который создает слайдер и работает с ним. Это особенное место, поэтому здесь я приведу этот код полностью.
<script type="text/javascript">
$(document).ready(function(){
$("#Slider").slider({
stepping: 1,
minValue: 0,
maxValue: 10,
slide: function(e,ui) {
$("#minResult").text( ui.values[0] );
$("#maxResult").text( ui.values[1] );
},
stop: function(e,ui) {
$("#textResult").text("Выбран диапазон значений от "
+ ui.values[0] + " до " + ui.values[1]);
}
});
});
</script>
Код самого слайдера отделен комментариями, а начинается код очень интересной функцией
$(document).ready(function(){
...
});
которая отслеживает момент готовности DOM. С ней мы познакомимся позднее, а пока продолжим разбирать сам слайдер.
В первой строке мы в общем просто сообщаем, что слайдером будет служить некий элемент с идентификатором #Slider. И далее задаем значения шага stepping: 1, минимального и максимального значения шкалы minValue: 0 и maxValue: 10, затем сообщаем, что в момент перемещения движка надо отслеживать его значения и передавать минимальное и максимальное значения в соответственно в элементы с идентификаторами #minResult и #maxResult и в тот момент, когда Вы отпускаете клавишу мыши, в элемент с идентификатором #textResult будет вставлена строка текста, в которую будут включены окончательные минимальное и максимальное значения.
Что делать с этими значениями дальше – решать Вам самим. Можно например передать их с помощью Ajax-запроса какому-либо файлу, который обратится к базе данных, выберет необходимые значения, определенные данными, снятыми со слайдера и вернет результат обратно в браузер пользователя.
Вот так. В общем не очень сложно.
Отзывов (17) на «Пользовательские интерфейсы jQuery: создаем слайдер.»
Видел эту “фичу” на буржуйских сайтах, нарыл – не работаи-и-и-иттт! Автору респект! На русском и все понятно в принципе. А детали можно и самому…
Тоже искал эту функцию. Большое спасибо! очень помогли.
Есть один вопрос, как сделать, чтобы при установки 2х слайдеров на одно число можно было и влево отводить слайдер, а то получается правый слейдер лежит на левом и его закрывает.
Если поставить слайдеры на 10, то все стопориться, вправо уже некуда отодвинуть, а влево нельзя.
Ну например использовать slider( «moveTo», value, index ) в stop: function(e,ui) с каким-либо условием…
Посмотрите детальнее тут: http://docs.jquery.com/UI/Slider, какое-то решение найдется обязательно. Я всего лишь демонстрировал возможности…
А вообще, по-хорошему, лучше всего брать значения с двух слайдеров, назначая второму начальную точку отсчета, отслеживая положения движка на первом слайдере…
Спасибо! буду разбираться. Тут мне еще надо, чтобы при клике на серой линии туда переходил ближайший слайдер и чтобы между слайдерами промежуток был другого цвета и вот чтобы когда они встаеют на одну цифру, не друг на друга наезжали, а стояли рядом, можно в качестве картинки использовать пол слайдера.
Реально ли это реализовать с помощью этой библиотеки? Буду разбираться!
Вот какие у меня запросы
У меня например такое ощущение, что с помощью библиотеки jQuery можно реализовать практически все… Другое дело, что пользуясь написанными кем-то плагинами, таким как и Slider тоже, Вы невольно привязываете себя к логике программиста, который этот плагин писал. Поэтому разбираться надо именно с самой библиотекой, вернее с ее API, потому что это даст Вам гораздо более серьезные возможности, чем просто использование плагинов.
Я надеюсь, что в ближайшее время мне удастся написать цикл статей, которые по сути будут являться вольным переводом документации по API jQuery. Думаю, что это может многим пригодиться.
Я эту библиотеку знаю давно. И есть мысль написать оболочку для дотнети. Точнее контролы, реализующие различный функционал. К сожалению, как всегда- недостаток времени.
Если – бы кто помог в плане реализации клиентских скриптов – то я бы «упаковал» это в контролы.
С контролами проще – среда сама побеспокоится о подключаемых библиотеках и плагинах. Можно будет строить мощные приложения.
вот большая подборка слайдеров, в том числе и на jquery
http://vremenno.net/js/javascript-best-sliders/
А есть возможность реализации вертикального слайдера?
Конечно.
http://jqueryui.com/demos/slider/#slider-vertical
Доброго времени всем!
Беру по аналогии ваш пример в IE 6.0.2.. и хочу использовать $(«#minResult»).text() для дальнейших расчетов в другой function():
slide: function(e,ui) {
$(«#minResult»).text( ui.values[0]);
…
count(ui.value);
}
…
function count(param) {
…
$(«#minResult»).text();
…
}
И никак! Приходится писать document.getElementById(‘minResult’).innerHTML чтобы вытащить из div-а передаваемое в него НА ЛЕТУ значение.
Такое чувство, что не торопится IE схватить еще не переданный параметр.
В свзи с этим – вопрос: можно ли в slide: function(e,ui) {..} что-то наподобие callback использовать для вызова count(…)?
Что интересно.. Если писать вот так:
slide: function(e,ui) {
$(«#minResult»).attr(«value», ui.values[0]);
…
count(ui.value);
}
…
function count(param) {
…
$(«#minResult»).attr(«value»);
…
}
то всё работает! Как атрибут IE понимает и получает
Где ошибаюсь?
Мозилла рулит всегда и везде
я немного опечатался в своем последнем посте:
$(”#minResult”).attr(”value”, ui.value);
(Бегунок использую один)
и в самой function() {
var с = $(”#minResult”).text();
}
Но суть вопроса не меняется
To aki:
Я бы не советовал уже брать именно этот пример – он довольно древний. Чуть выше я давал ссылочку на документацию по слайдеру. Повторю
http://jqueryui.com/demos/slider/#default
все-таки он очень сильно изменился за год с лишним. Попробуйте поработать со свежим кодом.
Ребят не знаю куда писать!!! Спасайте!
http://alt-f4.ru/expanding-menu-by-jquery#comment-344
Вот есть меню. Нужно сделать скажем что бы при выборе пункта раскрытый сворачивался. А не оставался открытым…
Григорий, уж точно не сюда, но тем не менее отвечу.
В обработчике click, можно в самом начале, перед if, добавить такой вот примерно код:
$(this).parent().siblings().each(function(){ $(this).find('ul').slideUp(200); });т.е. находим родителя элемента а, по которому был клик (это элемент li), находим всех его сестер. Перебираем найденные li и в контексте каждого ищем вложенный ul, который успешно скрываем.
Оговорюсь, что при инициализации лучше сделать все ветви скрытыми, во избежание непоняток.
Дайте ссылочку где можно найти новых слайдеров на jQuery
В самом начале статьи…