2013-09-16 2 views
2

У меня есть HTML-страница, содержащая много событий onmouseover. Эти события связаны с тегами a, img, td и div.Эффективное удаление события onmouseover из элементов DOM

Каков наиболее эффективный способ Javascript для удаления всех событий onmouseover, предполагающих, что страница загружена.

Я не использую jQuery.

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

+1

ли все 'onmouseover' указывая на ту же центральную функцию для отображения всплывающих подсказок? –

+0

Да, но я не могу отключить всплывающую подсказку, потому что она используется в некоторых событиях onclick. – soupagain

+1

Вы действительно подтвердили, что для этого требуется оптимизация? Каково текущее время задержки при удалении событий? –

ответ

1

Просто добавьте уникальный класс ко всему, что имеет событие mouseover, а затем сделать петлю

get=document.getElementsByClassName("classhere"); 
for(i=0; i<get.length; i++){ 
    get[i].removeEventListener("mouseover", yourFunction, false); 
    } 

заменить yourFunction и classhere, скажите мне, если он работает или нет

+0

Это решение является быстрым и эффективным. Благодарю. – soupagain

1

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

Если эта функция обрабатывает оба onmouseover и onclick события - вы можете проверить event.type и отключить всплывающие подсказки, только если он равен mouseover.

Демо: http://jsfiddle.net/cLHgK/1/

+0

К сожалению, мне нужно удалить события onmouseover, так как iPhone захватывает их при попытке щелкнуть элемент и обработать их неправильно. Единственное решение - полностью удалить их. – soupagain

+0

Действительно? Даже если ваш код специально заявляет, что ничего не делает при наведении указателя мыши и просто возвращается? Weird. –

1

Простой функция пробегает по всем элементам следует сделать трюк. Это один делает это для всех дивы: -

function removeMouseOver() { 
    var divs = document.body.getElementsByTagName('div'); 
    for (var i = 0; i < divs.length; i++) { 
     divs[i].onmoseover = function() {}; 
    } 
} 

другой способ, чтобы определить функцию Mouseover подсказке как вар

var tooltip = function(){// put your tooltip code here }; 
var donothing = function(){}; 

//to turn tooltips on:- 
onmouseoverfunc = tooltip; 

//to turn tooltips off:- 
onmouseoverfunc = donothing; 

в элементах

document.getElementById('mydiv').onmouseover = function(){mouseoverfunc();}; 
+0

Ваш ответ наиболее полный, но другой ответ тот, который я использовал! – soupagain

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