Всем Привет! Подскажите пожалуйста в каком направлении двигаться. Ситуация в следующем:
Имеем координату Х курсора мыши:
var x1 = Math.round((e.pageX - $(this).offset().left)*10);
Имеется массив X-координат вертикальных линий:
var konf = new Array();
konf = (1500, 2400, 3300, 4200); // массив может быть любой длины.
Необходимо, чтобы при наведении курсора на линию, т.е. х1 будет равен одному из элементов массива konf, срабатывало условие (у меня смена фона страницы). Сделано следующее:
var x2 = jQuery.inArray(x1, konf);
на выходе имеем необходимую нам координату и делаем с ней все, что нам нужно. Все бы хорошо, но есть одно весомое НО. Переменная х1 изменяется, при разных масштабах экрана, с разным шагом, т.е. двигая мышь слева на право, мы получаем такие координаты мыши, например: ……, 1489, 1499, 1509, 1519, 1529, ….. В итоге поймать курсор на координате 1500 не представляется возможным не изменив масштаб страницы, собственно это происходит и с остальными линиями. Естественно пользователь делать этого не будет. Что делать?
Есть идея создать диапазон рядом с линией, в который при попадании курсора мыши и будет выполняться наше условие, к примеру, 20 слева и 20 справа. В итоге:
if (konf.length>0){
var konf2 = new Array();
var d = 20;
for (var i=0, j=0; i<konf.length; i++, j=j+2){
konf2[j]= Number(konf[i])-d;
konf2[(j+1)]= Number(konf[i])+d;
}; //конец цикла for
};
получаем массив konf2(1480, 1520, 2380, 2420, 3280, 3320, 4180, 4220), т.е несколько диапазонов; 1480-1520, 2380-2420, 3280-3320, 4180-4220. Далее:
for (var i=0; i<konf2.length; i=i+2) {
if ( x1 >= ( Number(konf2[i])) && x1 <= (Number(konf[i+1])) ){
$('body').removeClass('body2');
$('body').addClass('body');
} else {
$('body').removeClass('body');
$('body').addClass('body2');
};
};
Вот как-то так. Все вроде должно работать, но работает только последний диапазон 4180-4220 (линия с х-координатой 4200), остальные молчат. Т.е. цикл пробежался по ним, последнюю i запомнил и по ней две цифры выводит. Что делать? Кто виноват? Подскажите пожалуйста в каком направлении копать.