Событие клика на document.body не работает должным образом в IE8 - PullRequest
1 голос
/ 20 октября 2011

Я работаю над некоторыми изменениями для веб-страницы, я использую MVC и jquery.

Обычно на моей странице есть значки справки, когда пользователь нажимает на иконку, появляется всплывающее окно с описанием справки.

У меня есть этот код в моем JavaScript для этой страницы:

AddHelpIconMouseEvents: function(element, msg, divForm) {
   $(element).live('click', function(event) {
      if (event.type === "click") MyClassHelper.showHelpIconBubble(msg, divForm, event);
   });
   $(document.body).click(function() { $(divForm).hide('fast'); });            
}

Как вы видите, я использую событие document.body.click для захвата любого клика за пределами всплывающей подсказки и скрытия этого всплывающего окна.

Теперь рассмотрим эту ситуацию, я нажимаю на значок справки, и появляется пузырь, если я щелкаю где-либо еще на странице, пузырь исчезает, как и ожидалось, но проблема у меня есть, если вместо нажатия на пустое место на странице, которую я нажимаю на ссылку, ссылка отображает другой раздел страницы, скрывает раздел, в котором содержался значок справки, но всплывающая подсказка не исчезает, а остается отображаемой.

Этого не происходит в Firefox, в котором я могу щелкнуть ссылку или пустое место, и пузырь исчезнет.

Я думаю, что это может быть связано с тем, как IE обрабатывает события, я думаю, что прочитал что-то об этом, поэтому мне интересно, если кто-нибудь знает, как я могу это исправить, я думаю, что я могу поместить некоторый код в ссылки и проверить если пузырь виден, скройте его, но мне не нравится идея, я думаю, что это не очень хорошее решение, мне интересно, есть ли другой лучший способ справиться с этим.

Спасибо

1 Ответ

0 голосов
/ 28 ноября 2011

Вы можете создать функцию, которая проверяет пакет справки, чтобы проверить в DOM, если он уже существует. Если это так, удалите его из DOM. Вы должны вызывать эту функцию для любой другой ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...