


The default behavior of the parent element tag and the interaction between click events
The content of this article is about the influence between the href default behavior of the parent element a tag and the response of the click event bound to the child element. It has certain reference value. Friends in need can refer to it. , hope it helps you.
Encountered a problem during the development process, simply write a demo The running environment is Chrome 68
Describe this problem, when there is nesting inside the a tag, the href default behavior of the parent element a tag There is an impact on the response to the click event bound to the child element. Page structure:
nbsp;html> <meta> <meta> <meta> <title>a标签内部点击事件失效</title> <style> * { margin: 0; padding: 0; } .father { display: block; width: 500px; height: 200px; background-color: rgb(210, 111, 30); } .child-one { display: block; width: 200px; height: 50px; background-color: rgb(174, 43, 226); } .child-two { display: block; width: 200px; height: 50px; background-color: rgb(43, 226, 67); } .child-three { display: block; width: 200px; height: 50px; background-color: rgb(43, 137, 226); } </style> <a>父标签 <span> 子标签1 </span> <object> <a> 子标签2 </a> </object> <object> <a> 子标签3 </a> </object> </a> <script> let father = document.querySelector('.father'); let ele1 = document.querySelector('.child-one'); let ele2 = document.querySelector('.child-two'); let ele3 = document.querySelector('.child-three'); ele1.addEventListener('click', function (e) { e.stopPropagation(); // e.preventDefault(); alert('click child-one') window.location.href = 'child-one' }, false) ele2.addEventListener('click', function (e) { e.stopPropagation(); alert('click child-two') // window.location.href='child-two' }, false) ele3.addEventListener('click', function (e) { alert('click child-three') window.location.href = 'child-three' }, false) father.addEventListener('click', function (e) { alert('click father') window.location.href = 'father' }, false) </script>
The example is as shown below (if the a tag is nested, the browser will parse it incorrectly, so it is wrapped with an object tag).
Perform the operation:
When the parent tag is clicked, 111 will pop up first, and then jump to the parent The href link of the tag.
Explanation that onclick is executed before hrefWhen child-one is clicked, the click event bound to the element is executed, and alert will pop up, but the location still jumps to father.
After preventing bubbling, the execution results still do not meet expectations. After addingpreventDefault
, the child element's own jump is performed.When child-two is clicked, a response message will pop up, and the href link will jump.
When child-three is clicked,
click child-three
pops up first, and thenhref child-three
, indicating that the click event precedes href execution.
The above four operations are all easy to understand except 2. In 2, why is the parent element still executed after preventing the event from bubbling? href
jump.
Thinking:
First of all, it is certain that event bubbling is indeed blocked because the onclick of the parent element is not executed.
So I guess, the default behavior of the tag cannot be prevented by canceling bubbling. Even if the event does not bubble up to the parent element, the child element is inside the parent element <a></a>
, the <a></a>
tag default behavior will still be performed.
Solution:
Add e.preventDefault() in the child element
Prevent default behavior
The parent element does not use<a> tag, use other tags to bind click events and child elements to prevent bubbling </a>
The parent element does not use the href
attribute, directly in <a></a>
Binding the click event on the label
Recommended related articles:
linkWhat is the difference between label link CSS and @import loading?
HTML tag: Summary of usage of img tag
The above is the detailed content of The default behavior of the parent element tag and the interaction between click events. For more information, please follow other related articles on the PHP Chinese website!

Solution to implement multi-project carousel in Bootstrap4 Implementing multi-project carousel in Bootstrap4 is not an easy task. Although Bootstrap...

How to achieve the effect of mouse scrolling event penetration? When we browse the web, we often encounter some special interaction designs. For example, on deepseek official website, �...

The default playback control style of HTML video cannot be modified directly through CSS. 1. Create custom controls using JavaScript. 2. Beautify these controls through CSS. 3. Consider compatibility, user experience and performance, using libraries such as Video.js or Plyr can simplify the process.

Potential problems with using native select on mobile phones When developing mobile applications, we often encounter the need for selecting boxes. Normally, developers...

What are the disadvantages of using native select on your phone? When developing applications on mobile devices, it is very important to choose the right UI components. Many developers...

Use Three.js and Octree to optimize collision handling of third-person roaming in the room. Use Octree in Three.js to implement third-person roaming in the room and add collisions...

Issues with native select on mobile phones When developing applications on mobile devices, we often encounter scenarios where users need to make choices. Although native sel...

Exploring the implementation principle of mouse scrolling events When browsing some websites, you may notice that some page elements still allow scrolling the entire page when the mouse is hovering...


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Zend Studio 13.0.1
Powerful PHP integrated development environment
