【发布时间】:2017-06-26 14:24:51
【问题描述】:
所以我有一个字符串数组(我认为我做对了):
var editableObjects = ['.body-copy', 'img', '.subhead', '.meta', '.caption', '.hyperlink', '.bullet'];
获取鼠标下元素的函数:
function getMouseElement(event) {
var posX = event.clientX,
posY = event.clientY;
// get the element that is located under the mouse
var overElem = document.elementFromPoint(posX, posY);
return overElem;
}
然后是这个 jquery 监听器,它监视“.editable”元素上的鼠标悬停:
$('#wrapper').on('mouseover', '.editable', function(event) {
var m = getMouseElement(event);
console.log(m.className); /*This correctly returns the tag of the element under the mouse*/
for (var c = editableObjects.length - 1; c >= 0; c--) {
var o = editableObjects[c];
if (m.className = o) {
console.log(m + ' matches ' + o);
} else {}
}
});
我想要做的是让函数查看列表并查看鼠标悬停的元素是否与editableObjects 中的字符串对象之一匹配。我的 for 循环应该检查变量中的任何匹配元素,然后在匹配时执行某些操作。但经过几个小时后,我只能让 for 循环为变量中的每个对象返回一个匹配项,无论它是否真的匹配。
【问题讨论】:
-
问题在于 if 语句中的 '=' 而不是 '=='。单个 '=' 是赋值运算符,而 '==' 用于比较。
-
也许我误解了您的意图,但是如果您需要确定何时在某些元素上触发
mouseover事件,为什么不简单地将事件侦听器放在这些元素而不是父元素上,然后计算光标位置?即,$('.body-copy').on('mouseover',... $('.subhead').on('mouseover'...等。 -
我只想将 .on 函数的第二个参数作为数组元素的选择器。
-
这些是动态元素,据我了解,它们需要在包含元素上委托侦听器才能在事件中触发。我试图在“.editable”类上触发鼠标悬停的委托侦听器,这是所有这些元素都会有的类,但我需要它来检查我的函数的某些类型的元素。
标签: javascript jquery arrays for-loop mouseover