Этот код хорошо работает для первого элемента с класс .trigger-элемента. Проблема в том, что когда я пытаюсь повлиять на другие элементы того же класса, это не работает.
Я попытался добавить метод forEach, но не смог заставить его работать.
Это должно влиять только на один элемент за раз и должно работать для каждого div. https://jsfiddle.net/secondleft/53mk1dst/6/
(function() {
var mX, mY, distance,
$element = $('.trigger-element');
// proximity threshold
var proximity = 300;
function calculateDistance(elem, mouseX, mouseY) {
return Math.floor(
Math.sqrt(
Math.pow(mouseX - (elem.offset().left + (elem.width() / 2)), 2) +
Math.pow(mouseY - (elem.offset().top + (elem.height() / 2)), 2)
)
) - Math.round(elem.width() / 2);
}
$(document).mousemove(function(e) {
mX = e.pageX;
mY = e.pageY;
distance = calculateDistance($element, mX, mY);
if (distance < proximity) {
$element.addClass("triggered");
} else {
$element.removeClass("triggered");
}
});
})();body {
background: black;
}
.trigger-element {
height: 40px;
width: 80px;
border: 1px solid #16f9f9;
margin: 20px;
}
.triggered {
color: #05080a;
background: #16f9f9;
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "trigger-element"></div>
<div class = "trigger-element" style = "position:absolute;right:0;"></div>Если у вас есть несколько элементов, и каждый из них должен оцениваться индивидуально, вам придется выполнить какой-то цикл.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно добавить цикл здесь:
$(document).mousemove(function(e) {
mX = e.pageX;
mY = e.pageY;
$element.each(function(i,el) {
const $el = $(el);
distance = calculateDistance($el, mX, mY);
if (distance < proximity) {
$el.addClass("triggered");
} else {
$el.removeClass("triggered");
}
});
});
Я пытался использовать каждый метод, но безрезультатно. спасибо за вашу помощь Адам, это правильно!
Ну, один запах кода заключается в том, что
$elementбудет содержать стек результатов из нескольких элементов. Тем не менее, ваш методcalculateDistanceрассматривает его как единый элемент.