27.02.2018, 13:18
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
рони,
|
|
27.02.2018, 14:08
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
В одну сторону - площадь по комнатам, например - работает, а в обе - и площадь по комнатам, и комнаты по площади - завязывается морским узлом
более-менее развязал - была ошибка в цикле.
<!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>
Последний раз редактировалось Dilettante_Pro, 27.02.2018 в 17:15.
|
|
27.02.2018, 14:12
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Мб надо два отдельных обработчика??
|
|
27.02.2018, 14:17
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
j0hnik,
Они отдельные (строки 27-32 и 40-47, второй закомментирован). Но если по первому слайдеру меняем значение в другом, то у него тоже возникает событие change и он влияет на первый, и они входят в клинч.
Последний раз редактировалось Dilettante_Pro, 27.02.2018 в 14:19.
|
|
27.02.2018, 14:28
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
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, 27.02.2018 в 16:53.
|
|
27.02.2018, 14:30
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Dilettante_Pro,
change в данном случае не подходит
|
|
27.02.2018, 14:51
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
j0hnik,
исправил - вроде работает с change
Вариант со slide работает неправильно из-за той же ошибки
Поправил вариант со slide тоже - он работает повеселее - интерактивнее - , чем change, и работает корректнее - все-таки по change сохраняется завязанность по событиям
Последний раз редактировалось Dilettante_Pro, 27.02.2018 в 17:17.
|
|
|
|