2009-05-25 2 views
1

Если у меня есть ...Как остановить прерывание родительских событий?

<div id="parent" onmouseover="doSomething()"> 
    <div id="child" onmouseover="doSomethingElse()"> 
    </div> 
</div> 

Как я могу сделать так, чтобы йоЗотеЬЫпд() не выполняется, когда я зависания над ребенком? Я только хочу, чтобы doSomethingElse() выполнялся, когда я наводил курсор на дочерний элемент, и я хочу, чтобы doSomething() выполнял, когда я хожу над родителем.

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

Matt

ответ

1
function doSomethingElse(e) { 
// your function body 

e.stopPropagation() 

} 
+0

не работает в IE – Christoph

+0

Разве это не функция JQuery? – Macha

+0

нет, это чистый javascript: https://developer.mozilla.org/En/DOM/Event.stopPropagation – 2009-05-25 17:41:49

1

Изменить значение атрибута для

onmouseover="doSomethingElse(event)" 

и изменить doSomethingElse() к

function doSomethingElse(e) { 
    e.stopPropagation && e.stopPropagation(); 
    e.cancelBubble = true; 
    // ... 
} 
+0

. cancelBubble не является стандартным свойством. Лучше использовать метод stopPropagation – 2009-05-25 17:39:08

+1

@Marwan: если вы хотите игнорировать пользователей IE, продолжайте, но заранее проверьте браузеры вашей целевой аудитории. – Christoph

+0

Пока IE игнорирует стандарты, которые он заслуживает лечения. Глаз для глаз и весь этот джаз. ;-) –

0

Я не проверял, но должно быть несколько способов сделай это.

Пожалуйста, проверьте бульканье событий: она отличается в IE и Firefox, но все-таки: www.quirksmode.org/js/events_order.html

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