Привязка к элементу при перетаскивании
Добрый день!
Подскажите как сделать так, чтобы при перетаскивании одного элемента другой элемент следовал за ним? Например в диапазоне цен: перетаскиваем бегунок и блок с ценой также перетаскивается за этой ценой |
Если jquery UI используешь
Для dragable В кэлбеке drag меняй координаты второго элемента http://jqueryui.com/draggable/#events Если sortable кэллбек slide В кэлбеке slide достаточно получить координаты бегунка это элемент с классом ui-slider-handle, а затем выставить текстовому блоку координаты как у бегунка. Каждый раз когда бегунок будет перемещаться, будет перемещаться и текстовый блок. |
sortable
1) В файле ui.js прописываю var coords = $(".ui-slider-handle").offset(); var left = Math.round(coords.left); alert (left); ничего не выводит Если убрать строчку var left = Math.round(coords.left); Выводит undefined 2) Если получим координаты, то как потом связать их с тем блоком, который нужно передвигать. 3) используются два бегунка, как придать им разный id или class |
slider jquery ui
Цитата:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>slider demo</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/south-street/jquery-ui.css"> <style> #slider { margin: 10px; } #show{ position: relative; width: 30px; top: 5px; } </style> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> </head> <body> <div id="show">0</div> <div id="slider"></div> <script> $( "#slider" ).slider( {change: function( event, ui ) { var left = $(ui.handle).css("left"); $("#show").html(ui.value).css({left : left} ) }, slide: function( event, ui ) { var left = $(ui.handle).css("left"); $("#show").html(ui.value).css({left : left} ) } } ); </script> </body> </html> |
Спасибо, а если будет 2 бегунка?
|
Цитата:
|
Помогите разобраться.
Что-то делаю не так и .slider("values", index, [value]) корректно применить не получается. |
<span id="min_block">0</span>
<span id="max_block">50000</span> <div id="slider"></div> <script type="text/javascript"> $( "#slider" ).slider({ range: true, min: 0, max: 50000, values: [ 0, 50000 ], change: function( event, ui ) { var left0 = $(ui.handle[ 0 ]).css("left"); var left1 = $(ui.handle[ 1 ]).css("left"); $("#min_block").html(ui.values[ 0 ]).css({left : left0}); $("#max_block").html(ui.values[ 1 ]).css({left : left1}); }, slide: function( event, ui ) { var left0 = $(ui.handle[ 0 ]).css("left"); var left1 = $(ui.handle[ 1 ]).css("left"); $("#min_block").html(ui.values[ 0 ]).css({left : left0}); $("#max_block").html(ui.values[ 1 ]).css({left : left1}); $( "#min_block" ).val( ui.values[ 0 ] ); $( "#max_block" ).val( ui.values[ 1 ] ); } }); </script> ui.handle[ 0 ] Как правильно определять индекс? |
slider ползунок UI две рукоятки
tai,
:write: примерно будет так ... вариант без использования ui.values ... хотелось бы мне знать другие способы ... css уточните согласно вашей разметке... <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>slider demo</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/le-frog/jquery-ui.css"> <style> #slider { margin: 10px;width : 500px; } .show1{ position: relative; width: 30px; top: 25px; } .show2{ position: relative; width: 30px; top: 5px; left: 500px; margin-left: -5px; } </style> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> </head> <body> <div class="show1">0</div><div class="show2">50000</div> <div id="slider"></div> <script> $( "#slider" ).slider( { range: true, min: 0, max: 50000, values: [ 0, 50000 ], change: function( event, ui ) { var index = $(ui.handle).index(); var left = $(ui.handle).css("left"); $(".show"+index).html(ui.value).css({left : left} ) }, slide: function( event, ui ) { var index = $(ui.handle).index(); var left = $(ui.handle).css("left"); $(".show"+index).html(ui.value).css({left : left} ) } } ); </script> </body> </html> |
Огромное спасибо!!!!
|
Часовой пояс GMT +3, время: 02:57. |