Module-02 FSD (BIS601)
Module-02 FSD (BIS601)
Module-02
1. Introduction to DOM
DOM(DocumentObjectModel)representsthestructureofanHTML
document as a tree of objects.
JavaScriptcanaccessandmanipulatetheseelementsdynamically.
2. SelectingElementsinDOM
UsingJavaScript:
o document.getElementById("id")–Selectsanelementby ID.
o document.getElementsByClassName("class")–Selectselementsby
class.
o document.getElementsByTagName("tag")–Selectselementsbytag
name.
o document.querySelector("selector")–Selectsthefirstmatching
element.
o document.querySelectorAll("selector")–Selectsallmatching
elements.
UsingjQuery:
o $("selector")–SelectselementsusingCSS-likesyntax.
3. ModifyingElements
JavaScript:
o element.innerHTML="NewContent";–Changescontentinsidean
element.
o element.textContent="NewText";–Updatesonlytextcontent.
o element.setAttribute("attribute","value");–Modifiesattributes.
jQuery:
o $("selector").html("NewContent");
o $("selector").text("NewText");
o $("selector").attr("attribute","value");
4. Adding&RemovingElements
JavaScript:
o document.createElement("tag")–Createsanewelement.
o parent.appendChild(child)–Addsachildelement.
o parent.removeChild(child)–Removesanelement.
jQuery:
o $("parent").append("<tag>NewContent</tag>");
o $("parent").prepend("<tag>NewContent</tag>");
o $("selector").remove();
5. HandlingEvents
JavaScript:
o element.addEventListener("event",function);
jQuery:
o $("selector").on("event",function(){});
Example:
document.getElementById("btn").addEventListener("click",function(){
alert("ButtonClicked!");
});
$("#btn").on("click",function()
{ alert("Button Clicked!");
});
6. ChangingCSSStyles
JavaScript:
o element.style.property="value";
jQuery:
o $("selector").css("property","value");
Example:
document.getElementById("box").style.backgroundColor="blue";
$("#box").css("background-color","blue");
7. Animations&EffectsinjQuery
$("selector").fadeIn();
$("selector").fadeOut();
$("selector").slideUp();
$("selector").slideDown();
$("selector").animate({property:"value"},duration);
8. AJAXandFetchingData
JavaScriptFetchAPI:
fetch("url")
.then(response=>response.json())
.then(data=>console.log(data));
jQueryAJAX:
$.ajax({
url:"url",
method:
"GET",success:function
(data){
console.log(data);
Dept of ISE, RIT, Hassan Page4
BIS601|FULLSTACKDEVELOPMENT
});
9. EventDelegation
Usedforhandlingeventsdynamicallyonelementsthatmaynotexistatthe start.
JavaScript:
document.getElementById("parent").addEventListener("click",function(event)
{ if (event.target.matches(".child")) {
console.log("Childclicked!");
});
jQuery:
$("#parent").on("click",".child",function()
{ console.log("Child clicked!");
});
10. FormHandling&Validation
Accessingformvalues:
letinputValue=document.getElementById("input").value;
if(inputValue.trim()===""){
alert("Fieldcannotbeempty");
1. DOMNode
AnodeisanyobjectintheDOMtree,suchas:
o Elementnodes(<div>,<p>,<button>,etc.)
o Attributenodes(class,id,style)
o Textnodes(contentinsideanelement)
o Commentnodes(<!--Thisisacomment-->)
2. AccessingNodes
Using JavaScript
document.getElementById("id")→Selectsanelementby ID.
document.getElementsByClassName("class")→Selectselementsbyclass
name.
document.getElementsByTagName("tag")→Selectselementsbytagname.
document.querySelector("selector")→Selectsthefirstmatchingelement.
document.querySelectorAll("selector")→Selectsallmatchingelements.
UsingjQuery
$("selector")→SelectselementsusingCSS-likesyntax.
Example:
letnode=document.getElementById("demo");//JavaScript
3. Creating&AddingNodes
Using JavaScript
document.createElement("tag")→Createsanewelement.
parent.appendChild(child)→Appendsachildnodetoaparent.
parent.insertBefore(newNode,existingNode)→Insertsbeforeanothernode.
Example:
letnewDiv=document.createElement("div");
document.body.appendChild(newDiv);
UsingjQuery
$("parent").append("<div>NewElement</div>");
$("parent").prepend("<div>NewatStart</div>");
Example:
$("body").append("<div>NewElement</div>");
4. Removing&ReplacingNodes
Using JavaScript
parent.removeChild(child)→Removesanode.
parent.replaceChild(newNode,oldNode)→Replacesanode.
Example:
lettoRemove=document.getElementById("remove"
);
toRemove.parentNode.removeChild(toRemove);
Using jQuery
$("selector").remove();→Removesanelement.
$("selector").replaceWith("<newelement>");→Replacesanelement.
Example:
$("#remove").remove();
$("#old").replaceWith("<p>NewParagraph</p>");
5. Cloning&CopyingNodes
Using JavaScript
element.cloneNode(true)→Clonesanelementwithallchildren(true)or only
itself (false).
Example:
letoriginal=document.getElementById("original"); let
clone = original.cloneNode(true);
document.body.appendChild(clone);
UsingjQuery
$("selector").clone();
Example:
letclonedElement=$("#original").clone();
$("body").append(clonedElement);
6. NavigatingNodes(Parent,Child,Sibling)
Using JavaScript
element.parentNode→Getstheparentnode.
element.children→Getsallchildelements.
element.firstChild/element.lastChild→Getsthefirst/lastchild.
element.nextSibling/element.previousSibling→Getsthenext/previous
node.
Example:
letfirstChild=document.getElementById("parent").firstChild;
Using jQuery
$("selector").parent();
$("selector").children();
$("selector").first();
$("selector").next();
Example:
letparent = $("#child").parent();
letfirstChild=$("#parent").children().first();
7. ChangingNodeContent
Using JavaScript
element.innerHTML="NewContent";→Changesinnercontent.
element.textContent="NewText";→Changestextonly.
UsingjQuery
$("selector").html("NewContent");
$("selector").text("NewText");
Example:
document.getElementById("demo").innerHTML="UpdatedContent";
$("#demo").html("UpdatedContent");
8. ChangingNodeAttributes
Using JavaScript
element.setAttribute("attribute","value");
element.getAttribute("attribute");
element.removeAttribute("attribute");
UsingjQuery
$("selector").attr("attribute","value");
$("selector").removeAttr("attribute");
Example:
document.getElementById("demo").setAttribute("class","new-class");
$("#demo").attr("class","new-class");
1. UpdatingElementContent
innerHTML(JS)/.html()(jQuery)→ChangestheinnerHTML,
including formatting.
textContent(JS)/.text()(jQuery)→Updatestextcontentonly(ignores
HTML tags).
Example:
document.getElementById("demo").innerHTML="<b>BoldText</b>";//
JavaScript
$("#demo").html("<b>BoldText</b>");//jQuery
2. UpdatingElementAttributes
setAttribute("attr","value")(JS)/.attr("attr","value")(jQuery)→
Modifies an attribute.
getAttribute("attr")(JS)/.attr("attr")(jQuery)→Retrievesanattribute
value.
removeAttribute("attr")(JS)/.removeAttr("attr")(jQuery)→Deletes an
attribute.
Example:
document.getElementById("myImage").setAttribute("src","new.jpg");//
JavaScript
$("#myImage").attr("src","new.jpg");//jQuery
3. HandlingEvents
JavaScript:addEventListener("event",function)→Bindsaneventtoan
element.
jQuery:.on("event",function)→Bindsanevent(canhandlemultiple
events).
Commonevents:click,mouseover,keydown,change.
Example:
document.getElementById("btn").addEventListener("click",function(){
alert("Clicked!");
});
$("#btn").on("click",function(){
alert("Clicked!");
});
4. RemovingEventListeners
JavaScript:removeEventListener("event",function)
jQuery:.off("event")
Example:
document.getElementById("btn").removeEventListener("click",myFunction);
$("#btn").off("click");
DifferentTypesofEventsinJavaScript& jQuery
EventsinJavaScriptandjQueryallowdeveloperstohandleuserinteractions effectively.
Below are the key types of events:
1. MouseEvents⬛'
Theseeventsrespondtouseractionswiththemouse.
document.getElementById("btn").addEventListener("click",function()
{ alert("Button clicked!");
});
//jQuery
$("#btn").on("click",function()
{ alert("Button clicked!");
});
2. KeyboardEvents.
Theseeventsrespondtokeyboardinteractions.
document.addEventListener("keydown",function(event)
});
//jQuery
$(document).on("keydown",function(event)
});
3. FormEvents)‘¸•
Theseeventsarerelatedtoformelements.
document.getElementById("myForm").addEventListener("submit",
function(event) {
event.preventDefault();//Preventsformfromsubmitting
alert("Form submitted!");
});
//jQuery
$("#myForm").on("submit",function(event){
event.preventDefault();
alert("Formsubmitted!");
});
4. WindowEvents●?
Theseeventsaretriggeredbythebrowserwindow.
window.addEventListener("resize",function()
{ console.log("Window resized!");
});
//jQuery
$(window).on("resize",function()
{ console.log("Windowresized!");
});
5. ClipboardEvents|,¯–−⬛
Theseeventshandlecopyingandpastingactions.
document.addEventListener("copy",function()
{ alert("Content copied!");
});
//jQuery
$(document).on("copy",function()
{ alert("Content copied!");
});
6. Drag&DropEvents⬛'.çv†
Theseeventsallowuserstodraganddropelements.
document.getElementById("dragElement").addEventListener("dragstart",
function() {
console.log("Draggingstarted!");
});
//jQuery
$("#dragElement").on("dragstart",function()
{ console.log("Dragging started!");
});
7. MediaEvents`~fz’˘ˆ—˜
Theseeventsareusedformediaelementslike<audio>and<video>.
document.getElementById("myVideo").addEventListener("play",function(){
console.log("Videostartedplaying!");
});
//jQuery
$("#myVideo").on("play", function()
{ console.log("Videostartedplaying!");
});
8. TouchEvents(MobileDevices)_ˆ□
Theseeventshandletouchinteractionsonmobiledevices.
document.addEventListener("touchstart",function()
{ console.log("Screen touched!");
});
//jQuery
$(document).on("touchstart",function()
{ console.log("Screen touched!");
});
1. UsingJavaScript(addEventListener)
TheaddEventListener(event,function)methodisusedtobindaneventtoan
element.
Syntax:
element.addEventListener("event",function);
Example:
document.getElementById("btn").addEventListener("click",function(){
alert("Buttonclicked!");
});
◆Supportsmultipleeventbindingsforthesameelement.
◆Doesnotoverrideexistingeventlisteners.
2. UsingJavaScript(onclickorInlineEventHandler)
Assigninganeventhandlerdirectlytotheonclickproperty.
Syntax:
element.event=function;
Example:
document.getElementById("btn").onclick=function(){
alert("Buttonclicked!");
};
⚠Limitations:
o Canonlybindoneeventatatime(overwritesprevious event).
o Notsuitablefordynamicelements.
3. UsingjQuery(.on())
The.on(event,selector,function)methodisusedtobindevents
dynamically.
Syntax:
$(selector).on("event",function);
Example:
$("#btn").on("click",function()
{ alert("Button clicked!");
});
⬛Worksondynamicallyaddedelements.
⬛Canbindmultipleeventsatonce.
4. UsingjQuery(.click(),.hover(),etc.)
Shortcutmethodsforspecificevents.
Example:
js
CopyEdit
$("#btn").click(function()
{ alert("Button clicked!");
});
◆Simplersyntaxbutdoesnotworkfordynamicallycreatedelements.
5. BindingMultipleEventstotheSameElement
JavaScript(addEventListener):
js
CopyEdit
letbtn =document.getElementById("btn");
btn.addEventListener("mouseover",function(){console.log("Mouseover!");});
btn.addEventListener("click",function(){console.log("Buttonclicked!");});
jQuery(.on()):
js
CopyEdit
$("#btn").on("mouseoverclick",function()
});
6. BindingEventstoMultipleElements
JavaScript(querySelectorAll):
js
CopyEdit
document.querySelectorAll(".buttons").forEach(button=>{ button.addEventListene
r("click", function() {
alert("Oneofthebuttons clicked!");
});
});
jQuery(.each()):
js
CopyEdit
$(".buttons").each(function(){
$(this).on("click", function()
{ alert("Oneofthebuttonsclicked!");
});
});
7. BindingEventstoDynamicallyAddedElements
JavaScript(EventDelegationusingdocument.addEventListener):
js
CopyEdit
document.addEventListener("click",function(event){
if(event.target.classList.contains("dynamic-btn")){
alert("Dynamicallyaddedbuttonclicked!");
});
jQuery(.on()):
js
CopyEdit
$(document).on("click",".dynamic-btn",function()
});
⬛WorksforelementsaddedlaterviaJavaScript/jQuery.
8. RemovinganEventBinding
JavaScript(removeEventListener):
function myFunction() {
alert("Clicked!");
document.getElementById("btn").addEventListener("click", myFunction);
document.getElementById("btn").removeEventListener("click",myFunction);
jQuery(.off()):
$("#btn").on("click",function(){alert("Clicked!");});
$("#btn").off("click");//Removesclickevent
EventDelegationinJavaScript&jQuery Event
Delegation
EventdelegationisatechniqueinJavaScriptwhereasingleeventlistenerisadded to a
parent element to handle events on multiple child elements, including dynamically
added elements.
⬛Efficient–Reducesmemoryusagebyattachingfewereventlisteners.
⬛Handles Dynamic Elements – Works even when new elements are added
dynamically.
⬛Better Performance – Instead of attaching events to every element, it
delegateshandlingtoacommonparent.
HowEventDelegationWorks?
1. Addaneventlistenertoacommonparentelement.
2. Useevent.targettocheckiftheeventwastriggeredbytheintendedchild
element.
3. Executetheeventhandleronlyifthecorrectchildelementis clicked.
1. EventDelegationUsingJavaScript
Example:HandlingClicksonaListofItems
document.getElementById("list").addEventListener("click",function(event){ if
alert("Clickedon:" +event.target.textContent);
});
◆ Theeventlistenerisattachedtothe #listparent,butitworksforall
<li> elements inside it.
◆ Worksevenfornew<li>itemsadded later.
2. EventDelegationUsingjQuery
Example:HandlingClicksonButtonsinsideaParentDiv
$(document).on("click",".child-btn",function(){ alert("Button
});
◆ Theeventisattachedto document,butitlistensfor.child-btnclicks.
◆ Worksfordynamicallyadded.child-btnelements.
4. WhentoUseEventDelegation?
5. WhenNottoUseEventDelegation?
ı.Ifthechildelementshavedifferenteventhandlersthatmustbeunique
ı.Ifcapturingeventbehaviorisneeded(i.e.,focus,blur,mouseenter)
ı. If immediate response is required (event delegation may have a slight delay
inlarge DOM structures)
6. Real-WorldExample
DynamicallyAddingandHandlingClickEvents
document.getElementById("addItem").addEventListener("click",function()
document.getElementById("list").appendChild(newItem);
});
document.getElementById("list").addEventListener("click",function(event){
if(event.target.tagName==="LI"){
alert("Youclickedon:"+ event.target.textContent);
});
◆ Clickingonnewlyadded<li>itemsstilltriggerstheevent!
7'•˙¸.s
EventListenersinJavaScript&jQuery
Aneventlistenerisafunctionthatwaitsforaspecificevent(likeaclick,hover, or
keypress) to happen on an element and executes a function in response.
⬛Detectsuserinteractions(clicks,keyboardinput,scrolling,etc.)
⬛Enhancesinteractivityinwebapplications
⬛ CanbeappliedtomultipleelementswithoutmodifyingHTML
1. AddingEventListenersinJavaScript
UsingaddEventListener()
TheaddEventListener()methodattachesaneventtoanelementwithout overwriting
existing events.
Syntax:
element.addEventListener("event",function,useCapture);
"event"→Typeofevent(e.g.,"click","mouseover","keydown")
function→Thefunctiontoexecutewhentheeventoccurs
useCapture(optional)→trueforeventcapturing,falseforbubblin
document.getElementById("btn").addEventListener("click",
function() {
alert("ButtonClicked!");
});
⬛Supportsmultipleeventlistenersonthesameelement
⬛Moreflexiblethanonclick
UsingInlineEventHandlers(onclick,onmouseover)
Youcandirectlyassignaneventtoanelementusingpropertieslikeonclick.
Example:
document.getElementById("btn").onclick=function()
{ alert("Button Clicked!");
};
⚠Limitations:
Overwritesanypreviouslyassignedeventhandlers
Notidealforhandlingmultipleevents
UsingAnonymousvsNamedFunctions
Bothanonymousandnamedfunctionscanbeusedineventlisteners.
⬛AnonymousFunction(InlineFunction)
document.getElementById("btn").addEventListener("click",function()
{ alert("Button Clicked!");
});
⬛Named Function
function showAlert()
{ alert("ButtonClicked!");
document.getElementById("btn").addEventListener("click",showAlert);
◆ AdvantageofNamedFunction:Canbereusedandremovedeasily
2. RemovingEventListeners
document.getElementById("btn").removeEventListener("click",showAlert);
⚠Thefunctionmustbenamedwhenremovingit.Anonymousfunctionscannot be
removed.
3. EventListenersinjQuery
Using.on() (Recommended)
The.on()methodattachesaneventlistenerdynamically.
$("#btn").on("click",function()
{ alert("Button Clicked!");
});
⬛Worksevenfordynamicallyaddedelements
⬛Canbindmultipleevents
Using.click(),.hover(),.keypress()(ShortcutMethods)
$("#btn").click(function(){
alert("ButtonClicked!");
});
⚠Thesemethodsdonotworkondynamicallyaddedelements.Use.on() instead.
4. EventPropagation(Bubbling&Capturing)
Example:BubblingEffect
document.getElementById("parent").addEventListener("click",function()
{ alert("Parent Clicked!");
});
document.getElementById("child").addEventListener("click",function(event)
{ alert("Child Clicked!");
});
◆ Clickingon#childwilltriggerbothlisteners(child→parent).
StoppingEventBubbling
Useevent.stopPropagation()topreventbubbling.
document.getElementById("child").addEventListener("click",function(event){
event.stopPropagation();
alert("ChildClicked,butparentwon'ttrigger!");
});
5. BindingMultipleEventstoanElement
AttachmultipleeventlistenersusingaddEventListener()or.on().
JavaScriptExample
letbtn =document.getElementById("btn");
btn.addEventListener("mouseover",function(){console.log("MouseOver!");});
jQuery Example
$("#btn").on("mouseoverclick",function()
});
6. EventDelegation
Insteadofattachinglistenerstoeachelement,attachittoaparentanduse event.target to
handle child elements dynamically.
JavaScriptExample
document.getElementById("parent").addEventListener("click",function(event)
alert("Buttoninsideparentclicked!");
});
jQueryExample
$(document).on("click",".child-btn",function()
});
⬛Bestforhandlingdynamicallygeneratedelements.
7. CommonEventListenerTypes