У меня ошибка IE, я не уверен, как это исправить.
Использование jQuery Я динамически перемещаю меню, которое должно появляться на элементе на мыши.
Мой код (упрощенный) выглядит примерно так:
$j = jQuery.noConflict();
$j(document).ready(function()
{
//do something on the menu clicks
$j('div.ico').click(function() { alert($j(this).parent().html()); });
setUpActions('#tableId', '#menuId');
});
//on mouseover set up the actions menu to appear on mouseover
function setUpActions(tableSelector, menuSelector)
{
$j(tableSelector + ' div.test').mouseover(function()
{
//note that append will move the underlying
//DOM element with all events from it old
//parent to the end of this one.
$j(this).append($j(menuSelector).show());
});
}
Это меню, похоже, неправильно регистрирует события для меню после его перемещения в IE7, IE8 и IE8-as-IE7 (да, MS, это действительно "новый движок рендеринга" в IE8, мы все считаем).
Он работает как ожидалось во всем остальном.
Вы можете увидеть поведение в базовом демо.
В демо вы можете увидеть два примера проблемы:
- Изображение за кнопками должно изменяться при наведении (выполняется с помощью селектора CSS: hover). Он работает с первым указателем мыши, но затем сохраняется.
- Событие click не срабатывает - однако с помощью инструментов dev вы можете его вручную вызвать и он все еще подписан.
Вы можете видеть (2) в инструментах IE8 dev:
- Откройте page в IE8
- Откройте инструменты для разработчиков
- Выберите вкладку "Script" и "Консоль"
- Тип:
$j('#testFloat div.ico:first').click()
для вызова любых подписанных событий вручную - На странице появится сообщение
Это означает, что я не теряю подписки на события, они все еще там, IE просто не вызывает их, когда я нажимаю.
Кто-нибудь знает, почему эта ошибка возникает (кроме как только из-за почтенного движка IE)?
Есть ли способ обхода?
Может ли это быть чем-то, что я делаю неправильно, что просто происходит, как ожидается, во всем остальном?