«Внутренний» элемент должен быть настроен так, чтобы обработчик возвращал false
:
Blah blah blah <a href="#" onclick="doSomethingElse(); return false;">Here</a>
, что предотвратит «всплывающее» событие по умолчанию для события через DOM.(Это также предотвратит поведение по умолчанию для тега <a>
, который в этом случае в любом случае ничего не значит.)
Вы также можете сделать это, вызвав метод ".preventDefault ()" для объекта событияизнутри обработчика, но вам придется изменить больше кода, чтобы сделать это, и это, похоже, не стоит (здесь).
Я делаю это много, похоже :-)В любом случае, возвращение false
определенно предотвращает действие по умолчанию, но оно не отменяет всплытие.Для этого обработчик может вызвать «.stopPropagation ()» (или в старых браузерах IE установить флаг «cancelBubble» для объекта события или что-то в этом роде).Однако, чтобы сделать это, вы должны зарегистрировать свои обработчики событий по-другому (ну, у вас может не быть , у которых есть , но я не припомню хитрости, необходимой для получения объекта события с помощью встроенного кода обработчика.)1015 *
Я действительно ненавижу отвечать на вопросы, подключая фреймворки, но обработка событий (и работа с капризами всех различных браузеров) - это одна из вещей, которые я с радостью делегирую фреймворку;почти все, что вы выберете, сделает обработку событий более простой и надежной.