рони,
:p |
более-менее развязал - была ошибка в цикле. <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .slider{ width: 300px; margin: 10px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/south-street/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> <script> $(function() { var arr = [[30,40],[50,60],[70,80],[90,100]], rm = $("#rooms"), sq = $("#square"); rm.slider({ min: 1, max: 4, step: 1, values: [1,2], range: true, change: function(event, ui) { var ar = sq.slider("option","values"); ar[0] = arr[ui.values[0] - 1][0]; ar[1] = arr[ui.values[1] - 1][1]; sq.slider("option","values",ar); } }); sq.slider({ min: 30, max: 100, step: 10, values: [30,50], range: true, change: function(event, ui) { var ar = rm.slider("option","values"); for (var i = 0; i < arr.length; i++){ if(ui.values[0] <= arr[i][0]) { ar[0] = i + 1; break; } } for (var i = 0; i < arr.length; i++){ if(ui.values[1] >= arr[i][0]) ar[1] = i + 1; } rm.slider("option","values",ar); } }) }); </script> </head> <body> <div class="slider" id="rooms"></div> <div class="slider" id="square"></div> </body> </html> |
Мб надо два отдельных обработчика??
|
j0hnik,
Они отдельные (строки 27-32 и 40-47, второй закомментирован). Но если по первому слайдеру меняем значение в другом, то у него тоже возникает событие change и он влияет на первый, и они входят в клинч. |
Dilettante_Pro,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .slider{ width: 300px; margin: 10px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/south-street/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> <script> $(function() { var arr = [[30,40],[50,60],[70,80],[90,100]], rm = $("#rooms"), sq = $("#square"); rm.slider({ min: 1, max: 4, step: 1, values: [1,2], range: true, slide: function(event, ui) { var ar = []; ar[0] = arr[ui.values[0] - 1][0]; ar[1] = arr[ui.values[1] - 1][1]; sq.slider("option","values",ar); } }); sq.slider({ min: 30, max: 100, step: 10, values: [30,50], range: true, slide: function(event, ui) { var ar = rm.slider("option","values"); for (var i = 0; i < arr.length; i++){ if(ui.values[0] <= arr[i][0]) { ar[0] = i + 1; break; } } for (var i = 0; i < arr.length; i++){ if(ui.values[1] >= arr[i][0]) ar[1] = i + 1; } rm.slider("option","values",ar); } }) }); </script> </head> <body> <div class="slider" id="rooms"></div> <div class="slider" id="square"></div> </body> </html> |
Dilettante_Pro,
change в данном случае не подходит |
j0hnik,
исправил - вроде работает с change Поправил вариант со slide тоже - он работает повеселее - интерактивнее - , чем change, и работает корректнее - все-таки по change сохраняется завязанность по событиям |
Часовой пояс GMT +3, время: 05:11. |