📖 Lecture 3—Functions and Events Handling
This is lecture 3 of the Beginning jQuery course. In this lecture, we focus on the JavaScript function and jQuery events handling methods.
If you come across any questions, feel free use the chat to ask me.
Understanding Function
If you’re new to JavaScript function, I suggest to get started reading the reference from Mozilla Developer Network.
After you understand the function, I recommend reading this chapter from the Eloquent JavaScript book.
Understanding the this
in JavaScript
When we are inside a function, sometime we may want to refer to the current context by using the special variable this
. But what is the this
actually pointing to?
A simple rule is JavaScript’s this
refers to the one that calls the function. For example:
function foo() {
console.log(this);
}
window.foo(); // `this` refers to window.
var objectA = {
hello: function(){
console.log(this);
}
};
objectA.hello(); // `this` refers to `objectA`.
objectA.hello.call(window); // ** `this` refers to `window`.
$('#input').keydown(function(){
console.log(this); // `this` refers to the $('#input').
});
** Note that we can use the call
or apply
method to change the context of any function calling
In other common object-oriented language, this
ofter refers to the same instance. In JavaScript, the this
refers to the context that calls that function.
Please make sure you read the Mozilla Developer Network’s this reference and understand the detail on how this
works.
Advance: Object and Prototype
Once you fully understand how function works, I recommend reading the Object chapter from the Eloquent JavaScript book. It shows you how we can manage objects in object oriented way.
Event handling
Handling events is one of the most common tasks when writing jQuery. We often need to respond to user’s actions and provide appropriate feedbacks. The following jQuery’s events handling documentation provides a getting started guide.
http://learn.jquery.com/events/handling-events/
Delegation
The delegate
method.
http://api.jquery.com/delegate/
Looping with jQuery each
In some cases, we need to loop through all the selected elements and apply logic on it. We can use the each
method.
Usage example:
$('selector').each(function(){
// each of the matched element
$(this).something();
});
Setting and Getting HTML attributes
There are prop
and attr
methods. Both methods access the attribute of the selected HTML tag. We prefer prop
most of the time, as explained in this StackOverflow answer
Example—Inputing multiple names
I created an example that demonstrates the techniques listed in this lecture. It is a list of inputs that user input names into it. User can add more inputs by clicking the “+” button. There is a confirmation dialog when submitting the form.
http://codepen.io/makzan/pen/vEQddR
Summary
After going through the links and code examples listed in this lecture, you should be able to handle different events.
—Thomas Mak
Comments
no comments yet.