2015-05-14 2 views
0

У меня есть список в разметке с подключенным прослушивателем событий, каждый из которых содержит один или два div, и идея состоит в том, чтобы делать что-то в зависимости от того, что нажал div. HTML пример:Ошибка запуска событий в Firefox

<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 по какой-то причине не срабатывает событие, когда DIV класса first (первый или единственный в li, если li содержит только один div). Firefox распознает только клики по divs класса second. Любые идеи, почему? Какая разница между этими браузерами?

+0

Пришло время ждать jquery-expert, но не в javascript .. :) –

+0

@Qeremy, что делает jQuery для кода pure-JS, опубликованного выше и с различиями в поведении браузера? – yxfxmx

+0

Вы не определили 'currentNote' – freefaller

ответ

0

Если это может быть полезно для кого-то - я нашел решение. Проблема связана с CSS. Divs, которые должны вызывать событие, имеют отрицательную z-индексную настройку в: активном состоянии. Оказалось, что по какой-то причине firefox отказывается запускать события для элементов с отрицательным z-индексом.

Смежные вопросы