我在标记中有一个列表,带有连接的事件侦听器,每个li包含一个或两个divs,这个想法是根据单击的div进行一些操作。HTML样本:
<ul id="list">
<li><div class="first a"></div><div class="second b c"></div></li>
<li><div class="first f"></div></li>
<li><div class="first e"></div><div class="second d r"></div></li>
…
JS样本:
var currentLang = 'en';
var failCounter = 0;
var currentArg = args[Math.floor(Math.random() * args.length)];
var previousArgs = [];
function keyClicked(event) {
if (event.target.className.split(' ').indexOf(currentArg) > -1) {
textBox.style.opacity = 0;
setTimeout(function () {
textBox.innerHTML = wonMessages[currentLang];
textBox.style.opacity = 1;
wrapper.className = 'alert alert-success wrapper-active';
}, 250);
wrapper.onclick = function () { location.href = "…" };
list.removeEventListener('click', keyClicked);
}
else {
if (failCounter < 1) {
failCounter++;
previousArgs.push(currentArg);
do { currentArg = args[Math.floor(Math.random() * args.length)]; }
while (previousArgs.indexOf(currentArg) > -1);
textBox.style.opacity = 0;
setTimeout(function () {
textBox.innerHTML = wrongMessages[currentLang];
textBox.style.opacity = 1;
wrapper.className = 'alert alert-warning';
}, 250);
}
else {
textBox.style.opacity = 0;
setTimeout(function () {
textBox.innerHTML = lostMessages[currentLang];
textBox.style.opacity = 1;
wrapper.className = 'alert alert-danger';
}, 250);
list.removeEventListener('click', keyClicked);
}
}
}
list.addEventListener('click', keyClicked);
问题是,虽然它在IE和Chrome中正常工作,但由于某种原因,Firefox在first
类(第一个或li
中唯一的 li
中只包含一个Div)时不会发射事件点击。Firefox仅识别second
类的单击。有什么想法,为什么?这些浏览器会导致什么区别?
如果对某人有帮助 - 我找到了一个解决方案。问题在于CSS。应触发事件的DIV在以下方面具有负z指数设置:活动状态。事实证明,由于某种原因,Firefox拒绝触发Z-Index元素的事件。