Module 2.2.
Before Start
The following contents are the notes I took when learning jQuery on Edx.
Mainly for front-End Web developers, check here to get more details.
CONTENTS
Three parts:
- Adding jQuery to web pages
- Managing content, events and effects
- Asynchronous operations and Ajax calls
Module2 : Managing content, events and effects
Module2 includes six parts:
- Event handlers
- Modifying elements
- Registering event handlers
- Adding new elements
- Animations
- Removing, replacing and cloning
Let’s get to know something about the last three parts of Module2.
Adding new elements
Internal DOM manipulation
append
,appendTo
,prepend
andprependTo
.Remember that the element you target will become the container for the new element. So using
append
will add a new element inside the target, not after the element.-
prepend
andprependTo
Add new content to the begining of the contents of a target.
Example:
```Html
existing content//executed either of the lines of JavaScript below
// prepend is called on the target, and accepts the new content as the parameter
$(‘#target’).prepend(‘New content‘);//or you can use prependTo
// prependTo is called on the new content, and accepts the target as the parameter
$(‘New content‘).prependTo(‘#target’);-
<!-- ending HTML -->
<div id="target">
<div>New content</div>
<div>existing content</div>
</div>
```
- `append` and `appendTo`
Add new content to the **end** of the contents of a target.
Example:
```Html
<!-- starting HTML -->
<div id="target">
<div>existing content</div>
</div>
//executed either of the lines of JavaScript below
// append is called on the target, and accepts the new content as the parameter
$('#target').append('<div>New content</div>');
// appendTo is called on the new content, and accepts the target as the parameter
$('<div>New content</div>').appendTo('#target');
<!-- ending HTML -->
<div id="target">
<div>existing content</div>
<div>New content</div>
</div>
```
External DOM manipulation
after
,insertAfter
,before
, andinsertBefore
after
andinsertAfter
Add new content after the target.
Example:
<!-- starting HTML --> <div id="target"> <div>existing content</div> </div> //executed either of the lines of JavaScript below // after is called on the target, and accepts the new content as a parameter $('target').after(' New content'); // insertAfter is called on the new content, and accepts the target as a parameter $(' New content').insertAfter('#target'); <!-- ending HTML --> <div id="target"> <div>existing content</div> </div> <div>New content</div>
before
andinsertBefore
Add new content before the target.
Example:
<!-- starting HTML --> <div id="target"> <div>existing content</div> </div> //executed either of the lines of JavaScript below // before is called on the target, and accepts the new content as a parameter $('target').before('New content'); // insertBefore is called on the new content, and accepts the target as a parameter $('New content').insertBefore('#target'); <!-- ending HTML --> <div>New content</div> <div id="target"> <div>existing content</div> </div>
Wrapping content
To manipulate the DOM by surrounding existing content with a new element.
wrap
wraps each item with the element passed into the function.
Example:
<!-- starting HTML --> <div id="target"> <div class="demo">Item one</div> <div class="demo">Item two</div> </div> //JS $('.demo').wrap('<section></section>'); <!-- ending HTML --> <div id="target"> <section> <div class="demo">Item one</div> </section> <section> <div class="demo">Item two</div> </section> </div>
wrapAll
returned content with one new element.
Example:
<!-- starting HTML --> <div id="target"> <div class="demo">Item one</div> <div class="demo">Item two</div> </div> //JS $('.demo').wrapAll('<section></section>'); <!-- ending HTML --> <div id="target"> <section> <div class="demo">Item one</div> <div class="demo">Item two</div> </section> </div>
wrapInner
Operates on the children of the target, rather than on the target itself.
Example:
<!-- starting HTML --> <div id="target"> <div class="demo">Item one</div> <div class="demo">Item two</div> </div> //JS $('#target').wrapInner('<section></section>'); <!-- ending HTML --> <div id="target"> <section> <div>Item one</div> <div>Item two</div> </section> </div>
Animations
hide
,show
,toggle
hide
causes something to disappear from the screen;show
causes something to appear;toggle
, on the other hand, determines the current status of the item in question and changes it.jQuery controls visibility by using the
display
property in CSS.Example:
<!-- HTML --> <div id="target">Show or hide</div> <button type="button" id="btn-toggle">Toggle</button> //JS $(function() { $('#btn-toggle').click(function() { // animation will take one second $('#target').toggle(1000); }); });
More:
<!-- HTML --> <style> .hidden { display: none; } </style> <form> <div> <label>Name:</label> <input type="text" /> </div> <button type="button" id="show-additional-information"> Show additional information </button> <div id="additional-information" class="hidden"> <label>Additional information:</label> <input type="text" /> </div> </form> //JS $(function() { $('#show-additional-information').click(function() { $('#additional-information').show(750); }); });
fading and sliding
fadeIn
,fadeOut
,fadeToggle
The fading functions perform their work by both modifying the CSS
display
property, and animates the item by modifying itsopacity
.fadeIn
andfadeOut
will display and hide an item respectively.fadeToggle
will reverse the current state of the item.slideDown
,slideUp
,slideToggle
The sliding functions perform their work by both modifying the CSS
display
property, and animates the item by modifying itsposition
.
Removing, replacing and cloning
Removing and replacing items
remove
andempty
Both completely delete items from the DOM.
remove
deletes the item you target.empty
deletes the contents of the item you target.Example:
<div id="target"> <div>Some cool content</div> <div>Some more cool content</div> </div> //JS //the resulting HTML would be, well, nothing. The entire contents of the sample are removed $(function() { $('#target').remove(); } //deletes the contents of the target, so the resulting HTML would be as <div id="target"></div> $(function() { $('#target').empty(); }
replaceAll
andreplaceWith
replace existing content with new content.
Example:
<!-- starting HTML --> <div id="target"> <div>Some cool content</div> <div>Some more cool content</div> </div> //JS. execute either of them // replaceWith replaces the content on the left with the new content in the parameter $('#target').replaceWith('<div>NEW content</div>'); // replaceAll replaces the target in the parameter with the content on the left $('<div>NEW content</div>').replaceAll('#target'); <!-- ending HTML --> <div>NEW content</div>
Cloning
clone
clone
allows you to make a copy of jQuery objects.Let’s say you were building a page to allow an administrator to create email addresses and passwords. You’d like to ensure the administrator can create as many accounts as they would like on one page, and be able to send up all of the information to the server in one round trip, rather than using Ajax calls or submitting the form for each account.
code:
<!-- HTML --> <button type="button" id="add-line">Add new line</button> <div id="container"> <div class="user-entry"> <label>Email:</label> <input type="email" /> <label>Password:</label> <input type="password" /> </div> </div> //JS $(function() { $userForm = $('.user-entry').clone; $('#add-line').click(function() { $('#container').append($userForm.clone()); }); });
Attention:
When you’re working with an object, JavaScript passes a reference to the object, not a copy of the object. This would mean that we’ve added in a pointer to the clone we created earlier, not a brand new copy. The end result is that if we did not call
clone()
a second time, we’d be trying to add the exact same object into the container again, not a brand new copy. By callingclone()
again, we pass in a copy of our user form, rather than a pointer to the one we already used.Cloning and animations
Combinnig cloning and animations.
Example:
<!-- HTML --> <button type="button" id="add-line">Add new line</button> <div id="container"> <div class="user-entry"> <label>Email:</label> <input type="email" /> <label>Password:</label> <input type="password" /> </div> </div> //JS $(function() { $userForm = $('.user-entry').clone(); $userForm.css('display', 'none'); $('#add-line').click(function() { var newUserForm = $userForm.clone(); $('#container').append($newUserForm); newUserForm.show(1000); }); });
This is Module2 all about. More details.