Js Bubbling Event Blocking

Source: Internet
Author: User

Original: Js Bubble event Block

1. Event Objectives

now, the variables in the event handlerEventthe event object is saved. andEvent.targetproperty holds the target element in which the event occurred. This property isDOM APIbut is not implemented by all browsers . JqueryThe event object is extended to the extent necessary to use this property in any browser. Through. Target, you can determineDomThe element in which the event was first received (that is, the element that was actually clicked). And, we knowThisrefers to the handling of events.Domelement, you can write the following code:
$ (document). Ready (function () {
$ (' #switcher '). Click (Function (event) {
$ (' #switcher. Button '). Toggleclass (' hidden ');
})
})

$ (document). Ready (function () {
$ (' #switcher '). Click (Function (event) {
if (event.target==this) {
$ (' #switcher. Button '). Toggleclass (' hidden ');
}
})
})
the code at this point ensures that the clicked element is<div id= "Switcher" >, not other descendant elements. Clicking the button now does not collapse the style converter, and clicking the border will trigger the collapse operation. However, clicking a label also doesn't happen because it is also a descendant element. In fact, we can not put the check code here, but by modifying the behavior of the button to achieve the goal .

2. Stop Event Propagation

The Event object also provides a . Stoppropagation () method that can completely block event bubbling. similar to. Target, this method is a pure JavaScript feature, but it is not safe to use in a cross-browser environment . However, we can safely use this method as long as we register all event handlers with JQuery.

below, we will delete the check statement that we just added Event.target = = This andadd some code to the button's click handler:

$ (document). Ready (function () {
$ (' #switcher. Button '). Click (Funtion (Event) {
......
Event.stoppropagation ();
})
})

As before, you need to add a parameter to the function that is used as the click handler to access the event object. Then, by simply calling Event.stoppropagation (), you can avoid all other DOM elements in response to this event. As a result, clicking on the button's event is handled by the button and will only be handled by the button. Click elsewhere in the style converter to collapse and expand the entire area.

3. Default Action

If we register the click event handler with an anchor element instead of an outer layer of <div> , we face another problem: when the user clicks the link, the browser loads a new page. This behavior is not the same concept as the event handler we are discussing, it is the default action for clicking the anchor element. Similarly, when the user presses the ENTER key after editing the form, it will touch the submit event of the publication , after which the form submission does not actually occur.

If we do not want to perform this default action, calling the. Stoppropagation () method on the event object does not help, because the default action does not occur in the normal event propagation stream. In this case,the. Preventdefault () method can terminate the event before triggering the default action .

Tips when certain validations are completed in the context of an event, the. Preventdefault () is usually used. For example, during form submission, we check whether the user has filled in the required fields, and if the user does not fill in the fields, then the default action needs to be blocked. We will discuss form validation in detail in Chapter 8.

event propagation and default operations are two sets of mechanisms that are independent of each other, and can terminate the other when either party occurs. If you want to stop event propagation and the default operation at the same time, you can return false in the event handler ,which is called at the same time on the event object . Stoppropagation () and . Preventdefault () a shorthand way.

Js Bubbling Event Blocking

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.