У меня есть событие onclick, связанное с областью на моей странице, которая вызывает определенное действие, когда пользователь нажимает на него (естественно). Недавно я добавил изображение в этот регион. Когда пользователь нажимает на это изображение, мне нужно другое действие, и я НЕ хочу, чтобы действие, связанное со всей областью, произошло. Тем не менее, я обнаружил, что оба события, фактически, срабатывают, когда один щелчок изображения. Как подавить действие по всему региону при щелчке изображения?Javascript: несколько событий, запускающихся из одного действия
1
A
ответ
4
Darit правильно, вам нужно остановить событие от барботирования (распространяющиеся):
function imgEventHandler(e) {
// ^notice: pass 'e' (W3C event)
// W3C:
e.stopPropagation();
// IE:
if (window.event) {
window.event.cancelBubble = true;
}
}
1
В обработчик событий для изображения сделать
event.cancelBubble = true;
, а затем в конце сделать
return false;
5
этот вопрос вы работаете в известен как кипящий событие. Событие клика изображения пузырится до всех родительских элементов этого узла. Вы хотите отменить пузыри.
Лучший способ сделать это, который работает во всех браузерах, - использовать фреймворк JavaScript. jQuery имеет очень простой способ сделать это. Другие структуры имеют аналогичные механизмы для отмены барботажа, я просто очень хорошо знаком с jQuery.
Например, вы могли бы сделать что-то вроде этого в JQuery:
$('img').click(function() {
// Do some stuff
return false;// <- Cancels bubbling to parent elements.
});
Смежные вопросы
- 1. Что определяет время 2 обработчиков событий, запускающихся из одного события, например, столкновение двух объектов в Unity3d?
- 2. Несколько графических интерфейсов, не запускающихся с AutoHotKey
- 3. Открыть несколько макетов из одного действия (listview)
- 4. Несколько функций для одного действия?
- 5. Предотвращение многократного срабатывания событий от одного действия
- 6. Javascript несколько событий
- 7. Несколько вариантов истечения срока действия для одного cookie? (javascript)
- 8. Javascript: несколько событий mouseout, вызванных
- 9. Javascript - несколько пользовательских прослушивателей событий
- 10. Javascript обработчик событий несколько целей
- 11. SharePoint: несколько событий для одного элемента обновлены
- 12. Несколько кнопок для одного действия без IB
- 13. Свяжите несколько событий в JavaScript
- 14. Как обрабатывать несколько типов событий из одного класса в JavaFX?
- 15. Zend frame work Несколько видов из одного действия
- 16. Как получить несколько событий одного UIBarButtonItem
- 17. Android несколько вебсервисов требуют одного действия
- 18. Несколько шаблонов маршрута Нэнси для одного действия?
- 19. Как использовать несколько копий одного действия?
- 20. Несколько переменных TempData, переданных для одного действия
- 21. Несколько ярлыков для одного действия в GTK
- 22. Rails: Освобождающееся несколько страниц для одного действия
- 23. Javascript: несколько событий, один запрос ajax
- 24. Выбор из DropDownList событий JavaScript
- 25. Свертывание нескольких событий Javascript до одного события
- 26. Увольнение javascript событий более одного раза
- 27. JavaScript-экземпляр JQuery .on (несколько событий мыши)
- 28. Javascript - Несколько слушателей событий с одной формой
- 29. Ограничить несколько событий в ASP .net & Javascript
- 30. Javascript: улавливайте несколько событий onkeyup из того же текстового ввода
Самый правильный ответ, но я считаю, что «return false» также требуется. – annakata
Может быть, я делаю что-то здесь не так, но для IE целей, которые я нашел, я должен был сделать: если (window.event) { cancelbubble } еще { e.stopPropagation } – ep4169