From ec58fde32f5c0056b0f5d44e41965b9559d0b951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Serrano?= Date: Wed, 24 Nov 2021 13:50:25 +0100 Subject: [PATCH 01/10] Create files --- assets/js/jquery.js | 0 assets/js/script.js | 0 assets/style/style.css | 0 index.html | 17 +++++++++++++++++ 4 files changed, 17 insertions(+) create mode 100644 assets/js/jquery.js create mode 100644 assets/js/script.js create mode 100644 assets/style/style.css create mode 100644 index.html diff --git a/assets/js/jquery.js b/assets/js/jquery.js new file mode 100644 index 00000000..e69de29b diff --git a/assets/js/script.js b/assets/js/script.js new file mode 100644 index 00000000..e69de29b diff --git a/assets/style/style.css b/assets/style/style.css new file mode 100644 index 00000000..e69de29b diff --git a/index.html b/index.html new file mode 100644 index 00000000..62ed4f10 --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + Jquery-Cheat-Sheet + + + + + \ No newline at end of file From 57680a08e2f1ae8daa51742a48bf8cd58ad9759f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Serrano?= Date: Wed, 24 Nov 2021 17:49:17 +0100 Subject: [PATCH 02/10] create addeventsListeners modal --- assets/js/script.js | 18 +++++++++++ assets/style/style.css | 57 ++++++++++++++++++++++++++++++++++ assets/style/style_reset.css | 51 ++++++++++++++++++++++++++++++ index.html | 60 ++++++++++++++++++++++++++++++++++-- 4 files changed, 183 insertions(+), 3 deletions(-) create mode 100644 assets/style/style_reset.css diff --git a/assets/js/script.js b/assets/js/script.js index e69de29b..226055a1 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -0,0 +1,18 @@ +let optionP = $("p") +let optionPArr = Array.from(optionP) + +console.log(optionP) +console.log(optionPArr) + +optionPArr.forEach(element => { + element.addEventListener("click", function() { + let bigDiv = document.createElement("div") + bigDiv.classList.add("modalTransparent") + $("body").append(bigDiv) + console.log(element.textContent) + let smallDiv = document.createElement("div") + smallDiv.classList.add("modalSmall") + bigDiv.appendChild(smallDiv) + + }) +}); diff --git a/assets/style/style.css b/assets/style/style.css index e69de29b..d2dc432a 100644 --- a/assets/style/style.css +++ b/assets/style/style.css @@ -0,0 +1,57 @@ +header{ + background-color: blue; +} +body{ + background-color: black; +} +main{ + background-color: blueviolet; +} +#container{ + display: flex; + flex-wrap: wrap; + align-content: center; + justify-content: center; + border: chocolate; + margin: 2%; +} +.section-container{ + width: 30%; + margin: 1%; + border: 1px solid black; + border-radius: 5px; +} +#events-container{ + background-color: chocolate; +} +#functions-container{ + background-color: royalblue; +} +#selectors-container{ + background-color: red; +} +p{ + cursor: pointer; +} + +/* MODAL */ +.modalTransparent{ + position: absolute; + display: flex; + flex-wrap: wrap; + justify-content: center; + align-content: center; + left: 0; + top: 0; + width: 100vw; + height: 100vh; + z-index: 1; + background-color: rgb(0, 0, 0,0.5); +} +.modalSmall{ + position: relative; + width: 300px; + height: 300px; + background-color: black; + border-radius: 10px; +} \ No newline at end of file diff --git a/assets/style/style_reset.css b/assets/style/style_reset.css new file mode 100644 index 00000000..ae00af19 --- /dev/null +++ b/assets/style/style_reset.css @@ -0,0 +1,51 @@ +/* Box sizing rules */ +*,*::before,*::after { + box-sizing: border-box; + } + /* Remove default margin */ + body,h1,h2,h3,h4,p,figure,blockquote,dl,dd { + margin: 0; + } + /* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */ + ul[role='list'], + ol[role='list'] { + list-style: none; + } + /* Set core root defaults */ + html:focus-within { + scroll-behavior: smooth; + } + /* Set core body defaults */ + body { + min-height: 100vh; + text-rendering: optimizeSpeed; + line-height: 1.5; + } + /* A elements that don't have a class get default styles */ + a:not([class]) { + text-decoration-skip-ink: auto; + } + /* Make images easier to work with */ + img, + picture { + max-width: 100%; + display: block; + } + /* Inherit fonts for inputs and buttons */ + input,button,textarea,select { + font: inherit; + } + /* Remove all animations, transitions and smooth scroll for people that prefer not to see them */ + @media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } + } \ No newline at end of file diff --git a/index.html b/index.html index 62ed4f10..bda64b0a 100644 --- a/index.html +++ b/index.html @@ -8,10 +8,64 @@ + Jquery-Cheat-Sheet - - - \ No newline at end of file + +
+
+
+

Events

+

HTML document has been loaded

+

clicked

+

double clicked

+

presses a key

+

moves the mouse cursor

+

changes a value

+

image is loaded

+

image fails to load

+

form is submitted

+

changes the option of a select element

+

position the mouse over an element

+

position the mouse over an element

+

ul list item is clicked

+
+
+

Functions

+

Create

+

Remove

+

Append

+

Prepend

+

Create and add an HTML element with any text value after another element

+

Create and add an HTML element with any text value before another element

+

Clone

+

Add a class

+

Remove a class

+

Toggle a class

+

Add a disabled attribute

+

Remove the disabled attribute

+

Set a data-src attribute

+

Remove the data-src attribute

+

Hide

+

Show

+

Fade in

+

Fade out

+
+
+

Selectors

+

Iterate a collection of elements

+

Get the parent element

+

Get the collection of children

+

Get all the elements that have a certain class

+

Get an item by id

+

Get all the elements

+

Get the options of a select element that are selected

+

Change the href attribute of the first element

+

Show an alert with the value of the first "input" of the page

+

Remove all items

+

Animate an item

+
+
From 736f23c75c8313e91e09cd33311aea04366a7644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Serrano?= Date: Wed, 24 Nov 2021 18:21:44 +0100 Subject: [PATCH 03/10] Remove modal function --- assets/js/script.js | 33 +++++++++++++++++++++++++-------- assets/style/style.css | 2 +- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/assets/js/script.js b/assets/js/script.js index 226055a1..c6e7ae21 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -6,13 +6,30 @@ console.log(optionPArr) optionPArr.forEach(element => { element.addEventListener("click", function() { - let bigDiv = document.createElement("div") - bigDiv.classList.add("modalTransparent") - $("body").append(bigDiv) - console.log(element.textContent) - let smallDiv = document.createElement("div") - smallDiv.classList.add("modalSmall") - bigDiv.appendChild(smallDiv) - + createModal(element) + }) }); + + +function createModal(element){ + let bigDiv = document.createElement("div") + bigDiv.classList.add("modalTransparent") + bigDiv.setAttribute("id","modal") + $("body").append(bigDiv) + console.log(element.textContent) + let smallDiv = document.createElement("div") + smallDiv.classList.add("modalSmall") + bigDiv.appendChild(smallDiv) + removeModal(bigDiv) +} + +function removeModal(child){ + let bigDivClose = document.getElementById("modal") + bigDivClose.addEventListener("click",(e)=>{ + if(e.target.matches(".modalTransparent")){ + document.body.removeChild(child) + bigDivClose.removeEventListener; + } + }) +} diff --git a/assets/style/style.css b/assets/style/style.css index d2dc432a..36d06407 100644 --- a/assets/style/style.css +++ b/assets/style/style.css @@ -49,9 +49,9 @@ p{ background-color: rgb(0, 0, 0,0.5); } .modalSmall{ - position: relative; width: 300px; height: 300px; background-color: black; border-radius: 10px; + z-index: 10; } \ No newline at end of file From 62f0347ddf3e46ff0efae00fca8fddb5fa1f8935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Serrano?= Date: Thu, 25 Nov 2021 16:10:34 +0100 Subject: [PATCH 04/10] function callback to find objects --- assets/js/jquery.js | 47 ++++++++++++++++++++++++++++++++++++++++++ assets/js/script.js | 35 +++++++++++++++++++++++-------- assets/js/templates.js | 0 index.html | 12 +++++++++++ 4 files changed, 85 insertions(+), 9 deletions(-) create mode 100644 assets/js/templates.js diff --git a/assets/js/jquery.js b/assets/js/jquery.js index e69de29b..7517a944 100644 --- a/assets/js/jquery.js +++ b/assets/js/jquery.js @@ -0,0 +1,47 @@ +const exercisesArr= [ + { + dataset:1, + tittle:"HTML document has been loaded", + commandJQ:"imput", + commandJS:"imput", + exampleJQ:`$(function(){ + console.log( 'ready!' ); + })`, + exampleJS:`$(function(){ + console.log( 'ready!' ); + })`, + link:"", + functions:function (){exerciseJS1(),exerciseJQ1()}, + }, + { + dataset:0, + tittle:"HTML document has been loaded", + commandJQ:"ready()", + commandJS:"ready()", + exampleJQ:`$(function(){ + console.log( 'ready!' ); + })`, + exampleJS:`$(function(){ + console.log( 'ready!' ); + })`, + link:"", + functions:function (){exerciseJS0(),exerciseJQ0()}, + }, + +] + +function exerciseJQ0(){ + console.log("holaJQ 0") +} +function exerciseJQ1(){ + console.log("holaJQ 1") +} + +function findExercisesFun(index){ + exercise = exercisesArr.find(item => { + return item.dataset === index + }) + return exercise; +} + + diff --git a/assets/js/script.js b/assets/js/script.js index c6e7ae21..2432918d 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -4,26 +4,26 @@ let optionPArr = Array.from(optionP) console.log(optionP) console.log(optionPArr) -optionPArr.forEach(element => { +optionPArr.forEach((element,index) => { element.addEventListener("click", function() { - createModal(element) - + createModal(element, removeModal, findExercisesFun(index).functions) }) }); - - -function createModal(element){ +function createModal(element, cb, fn){ let bigDiv = document.createElement("div") bigDiv.classList.add("modalTransparent") bigDiv.setAttribute("id","modal") $("body").append(bigDiv) - console.log(element.textContent) let smallDiv = document.createElement("div") smallDiv.classList.add("modalSmall") + smallDiv.textContent = element.textContent; bigDiv.appendChild(smallDiv) - removeModal(bigDiv) -} + cb(bigDiv) + fn(smallDiv) + //createContent(smallDiv) + //removeModal(bigDiv) +} function removeModal(child){ let bigDivClose = document.getElementById("modal") bigDivClose.addEventListener("click",(e)=>{ @@ -33,3 +33,20 @@ function removeModal(child){ } }) } + + +function exerciseJS0(){ + console.log("hola 0") +} +function exerciseJS1(){ + console.log("hola 1") +} + + + +// function createContent(parent){ +// var t = document.querySelector('#template-exercise-content'); +// let tContent = t.content; +// parent.appendChild(tContent) +// } + diff --git a/assets/js/templates.js b/assets/js/templates.js new file mode 100644 index 00000000..e69de29b diff --git a/index.html b/index.html index bda64b0a..2cf81af3 100644 --- a/index.html +++ b/index.html @@ -69,3 +69,15 @@

Selectors

Animate an item

+
+ + + + + \ No newline at end of file From 51868c97069427540024653bdf5118d59473354e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Serrano?= Date: Thu, 25 Nov 2021 16:35:43 +0100 Subject: [PATCH 05/10] Find exercises working ok --- assets/js/jquery.js | 46 +++++++++++++++++---------------------------- assets/js/script.js | 15 +++++++++------ 2 files changed, 26 insertions(+), 35 deletions(-) diff --git a/assets/js/jquery.js b/assets/js/jquery.js index 7517a944..d699cc63 100644 --- a/assets/js/jquery.js +++ b/assets/js/jquery.js @@ -1,35 +1,29 @@ const exercisesArr= [ - { - dataset:1, - tittle:"HTML document has been loaded", - commandJQ:"imput", - commandJS:"imput", - exampleJQ:`$(function(){ - console.log( 'ready!' ); - })`, - exampleJS:`$(function(){ - console.log( 'ready!' ); - })`, - link:"", - functions:function (){exerciseJS1(),exerciseJQ1()}, - }, { dataset:0, tittle:"HTML document has been loaded", commandJQ:"ready()", commandJS:"ready()", - exampleJQ:`$(function(){ - console.log( 'ready!' ); - })`, - exampleJS:`$(function(){ - console.log( 'ready!' ); - })`, - link:"", functions:function (){exerciseJS0(),exerciseJQ0()}, }, - + { + dataset:1, + tittle:"HTML document has been loaded", + commandJQ:"imput", + commandJS:"imput", + functions:function (){exerciseJS1(),exerciseJQ1()}, + }, ] - +function findExercisesFun(index){ + exercise = exercisesArr.find(item => { + return item.dataset === index; + }) + if(exercise == null){ + return console.log("do not exist"); + }else{ + return exercise; + } +} function exerciseJQ0(){ console.log("holaJQ 0") } @@ -37,11 +31,5 @@ function exerciseJQ1(){ console.log("holaJQ 1") } -function findExercisesFun(index){ - exercise = exercisesArr.find(item => { - return item.dataset === index - }) - return exercise; -} diff --git a/assets/js/script.js b/assets/js/script.js index 2432918d..60aa8e48 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -6,10 +6,14 @@ console.log(optionPArr) optionPArr.forEach((element,index) => { element.addEventListener("click", function() { - createModal(element, removeModal, findExercisesFun(index).functions) + if (findExercisesFun(index)){ + createModal(element, index, findExercisesFun(index).functions) + }else{ + return; + } }) }); -function createModal(element, cb, fn){ +function createModal(element, index, cb){ let bigDiv = document.createElement("div") bigDiv.classList.add("modalTransparent") bigDiv.setAttribute("id","modal") @@ -18,12 +22,11 @@ function createModal(element, cb, fn){ smallDiv.classList.add("modalSmall") smallDiv.textContent = element.textContent; bigDiv.appendChild(smallDiv) - cb(bigDiv) - fn(smallDiv) + removeModal(bigDiv) + cb() +} //createContent(smallDiv) //removeModal(bigDiv) - -} function removeModal(child){ let bigDivClose = document.getElementById("modal") bigDivClose.addEventListener("click",(e)=>{ From 0e60ab23bf91db4cea22f2c33a35a0b8f22c898e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Serrano?= Date: Thu, 25 Nov 2021 17:22:54 +0100 Subject: [PATCH 06/10] Stetics modal content --- assets/js/jquery.js | 3 ++- assets/js/script.js | 21 +++++++++++++---- assets/style/style.css | 52 ++++++++++++++++++++++++++++++++++++++---- index.html | 4 ++-- 4 files changed, 68 insertions(+), 12 deletions(-) diff --git a/assets/js/jquery.js b/assets/js/jquery.js index d699cc63..152e6ed1 100644 --- a/assets/js/jquery.js +++ b/assets/js/jquery.js @@ -1,4 +1,4 @@ -const exercisesArr= [ +const exercisesArr = [ { dataset:0, tittle:"HTML document has been loaded", @@ -14,6 +14,7 @@ const exercisesArr= [ functions:function (){exerciseJS1(),exerciseJQ1()}, }, ] + function findExercisesFun(index){ exercise = exercisesArr.find(item => { return item.dataset === index; diff --git a/assets/js/script.js b/assets/js/script.js index 60aa8e48..ea7808d4 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -18,15 +18,27 @@ function createModal(element, index, cb){ bigDiv.classList.add("modalTransparent") bigDiv.setAttribute("id","modal") $("body").append(bigDiv) + let smallDiv = document.createElement("div") smallDiv.classList.add("modalSmall") - smallDiv.textContent = element.textContent; bigDiv.appendChild(smallDiv) + + let titleDiv = document.createElement("div") + titleDiv.classList.add("title-container") + titleDiv.textContent = element.textContent; + smallDiv.appendChild(titleDiv) + + let jQueryDiv = document.createElement("div") + jQueryDiv.classList.add("jQuery-container") + smallDiv.appendChild(jQueryDiv) + + let jScriptDiv = document.createElement("div") + jScriptDiv.classList.add("javaScript-container") + smallDiv.appendChild(jScriptDiv) removeModal(bigDiv) - cb() + cb(jQueryDiv, jScriptDiv) } - //createContent(smallDiv) - //removeModal(bigDiv) + function removeModal(child){ let bigDivClose = document.getElementById("modal") bigDivClose.addEventListener("click",(e)=>{ @@ -37,7 +49,6 @@ function removeModal(child){ }) } - function exerciseJS0(){ console.log("hola 0") } diff --git a/assets/style/style.css b/assets/style/style.css index 36d06407..14c7380a 100644 --- a/assets/style/style.css +++ b/assets/style/style.css @@ -1,11 +1,20 @@ header{ + display: flex; + justify-content: center; + align-items: center; background-color: blue; + height: 15vh; } body{ background-color: black; } main{ + height: 85vh; + display: flex; + align-content: center; + justify-content: center; background-color: blueviolet; + margin: auto; } #container{ display: flex; @@ -13,7 +22,7 @@ main{ align-content: center; justify-content: center; border: chocolate; - margin: 2%; + margin: auto; } .section-container{ width: 30%; @@ -49,9 +58,44 @@ p{ background-color: rgb(0, 0, 0,0.5); } .modalSmall{ - width: 300px; - height: 300px; + width: 50%; + height: 50%; background-color: black; border-radius: 10px; z-index: 10; -} \ No newline at end of file + display: flex; + flex-wrap: wrap; + justify-content: center; + align-content: center; +} + +/* EXERCISE CONTAINERS */ +.title-container{ + align-items: center; + display: flex; + justify-content: center; + text-align: center; + align-content: center; + color: crimson; + background-color: cyan; + border-radius: 10px; + height: 12%; + width: 98%; + margin: 1% 1% 0% 1%; +} +.jQuery-container{ + scroll-behavior: smooth; + background-color: blue; + border-radius: 10px; + height: 85%; + width: 48.5%; + margin: 1% 0% 1% 1%; +} +.javaScript-container{ + scroll-behavior: smooth; + background-color: coral; + border-radius: 10px; + height: 85%; + width: 48.5%; + margin: 1%; +} diff --git a/index.html b/index.html index 2cf81af3..7c3bf887 100644 --- a/index.html +++ b/index.html @@ -73,11 +73,11 @@

Selectors

- + \ No newline at end of file From e24aa458bb2c09f385f13c73aa292b43fb6c7a6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Serrano?= Date: Thu, 25 Nov 2021 18:26:10 +0100 Subject: [PATCH 07/10] 1er template exercises --- assets/js/jquery.js | 16 +++++++++------- assets/js/script.js | 13 ++++++++----- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/assets/js/jquery.js b/assets/js/jquery.js index 152e6ed1..834143bd 100644 --- a/assets/js/jquery.js +++ b/assets/js/jquery.js @@ -4,17 +4,16 @@ const exercisesArr = [ tittle:"HTML document has been loaded", commandJQ:"ready()", commandJS:"ready()", - functions:function (){exerciseJS0(),exerciseJQ0()}, + functions:function (jQueryDiv, jScriptDiv){exerciseJS0(jScriptDiv),exerciseJQ0(jQueryDiv)}, }, { dataset:1, tittle:"HTML document has been loaded", commandJQ:"imput", commandJS:"imput", - functions:function (){exerciseJS1(),exerciseJQ1()}, + functions:function (jQueryDiv, jScriptDiv){exerciseJS1(jScriptDiv),exerciseJQ1(jQueryDiv)}, }, ] - function findExercisesFun(index){ exercise = exercisesArr.find(item => { return item.dataset === index; @@ -25,11 +24,14 @@ function findExercisesFun(index){ return exercise; } } -function exerciseJQ0(){ - console.log("holaJQ 0") +function exerciseJQ0(jQueryDiv){ + let jQueryDivInnet1 = document.createElement("div") + jQueryDivInnet1.classList.add("jQuery-container-inner") + jQueryDivInnet1.innerText = "HOLA jquery" + jQueryDiv.appendChild(jQueryDivInnet1) } -function exerciseJQ1(){ - console.log("holaJQ 1") +function exerciseJQ1(jQueryDiv){ + console.log("holaJQ 1"+jQueryDiv) } diff --git a/assets/js/script.js b/assets/js/script.js index ea7808d4..cd91bfb8 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -35,10 +35,10 @@ function createModal(element, index, cb){ let jScriptDiv = document.createElement("div") jScriptDiv.classList.add("javaScript-container") smallDiv.appendChild(jScriptDiv) + removeModal(bigDiv) cb(jQueryDiv, jScriptDiv) } - function removeModal(child){ let bigDivClose = document.getElementById("modal") bigDivClose.addEventListener("click",(e)=>{ @@ -48,12 +48,15 @@ function removeModal(child){ } }) } +function exerciseJS0(jScriptDiv){ -function exerciseJS0(){ - console.log("hola 0") + let jScriptDivInner1 = document.createElement("div") + jScriptDivInner1.classList.add("jScript-container-inner") + jScriptDivInner1.innerText = "HOLA script" + jScriptDiv.appendChild(jScriptDivInner1) } -function exerciseJS1(){ - console.log("hola 1") +function exerciseJS1(jScriptDiv){ + console.log("hola 1"+jScriptDiv) } From a875aba5dd66863b2217058457a88f7d52bda0fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Serrano?= Date: Fri, 26 Nov 2021 17:52:03 +0100 Subject: [PATCH 08/10] lots of exercises copy pastes --- assets/img/great.jpg | Bin 0 -> 33798 bytes assets/js/jquery.js | 464 ++++++++++++++++++++++++++++++++++++++++- assets/js/script.js | 102 +++++++-- assets/style/style.css | 77 ++++++- index.html | 55 +++-- 5 files changed, 637 insertions(+), 61 deletions(-) create mode 100644 assets/img/great.jpg diff --git a/assets/img/great.jpg b/assets/img/great.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1fb0d4d5a27be359e3671fd45c8ce6dbce90c78c GIT binary patch literal 33798 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"+ + //content exercise here + ` + var createElementP = $("").text("Congratulations!") + + ` + //content exercise here + +"") + $(jQueryDiv).append("

"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="

"){ + $("#solution-box").text("Congratulations!") + }else{ + $("#solution-box").text("try again") + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("

") + } + } -function exerciseJQ1(jQueryDiv){ - console.log("holaJQ 1"+jQueryDiv) +function exerciseJQ14(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").; + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
remove me!
') + + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="remove()"){ + $("#solution-box").text("removed!") + }else{ + $("#solution-box").text("try again") + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("remove()") + } + +} +function exerciseJQ15(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").(<div id="div2">brother2: I want to be it!!!</div>); + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + Parent: I am the parent, + ` + //content exercise here + +"
") + $("#solution-box").append('
brother1: I want a brother!
') + + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="append"){ + $("#solution-box").append('
brother2: I want to be it!!!
') + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("append") + } + +} +function exerciseJQ16(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").(<div id="div2">brother2: ok I sleep up!!!</div>); + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + Parent: I am the parent ("textContent"), + ` + //content exercise here + +"
") + $("#solution-box").append('
brother1: I want tu sleep down on the bunk!
') + + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="prepend"){ + $("#solution-box").prepend('
brother2: ok I sleep up!!!
') + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("prepend") + } + +} +function exerciseJQ17(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").(<div id="div2">brother2: here I am!!!!!! </div>); + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
brother1: Brother1 :I want someone bellow to me!
') + + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="after"){ + $("#div1").after('
brother2: here I am!!!!!!
') + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("after") + } + +} +function exerciseJQ18(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").(<div id="div2">brother2: here I am!!!!!! </div>); + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
brother1: Brother1 :I want someone above to me!
') + + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="before"){ + $("#div1").before('
brother2: here I am!!!!!!
') + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("before") + } + +} +function exerciseJQ19(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").().after("#div1"); + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
Brother1 :I want to be cloned
') + $("#solution-box").append('
Brother2 :I do not want to be cloned cloned
') + + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="clone"){ + $(".div1").clone().appendTo("#div2") + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("clone") + } + } +function exerciseJQ20(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").("poor-class"); + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
Dude :I want to have class
') + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="addClass"){ + $(".div1").addClass("poor-class") + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("addClass") + } +} +function exerciseJQ21(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").("poor-class"); + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
Dude :I do not want this class!!
') + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="removeClass"){ + $(".div1").removeClass("poor-class") + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("removeClass") + } +} +function exerciseJQ22(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#div1").("poor-class"); + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
Dude :I am undecided person!!
') + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="toggleClass"){ + $(".div1").toggleClass("poor-class") + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("toggleClass") + } +} +function exerciseJQ23(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#show-solution-button").("disabled", true) + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
Dude :do not show the solution any more!!
') + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="prop"){ + $("#show-solution-button").prop("disabled", true) + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("prop") + } +} +function exerciseJQ24(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#show-solution-button").("disabled", "false") + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('
Dude :If you want the solution, you need the solution...
') + $("#solution-button").on("click",validateSolutionFun) + $("#show-solution-button").prop("disabled", true) + function validateSolutionFun(){ + if( $("#input-solution").val()=="prop"){ + $("#show-solution-button").prop("disabled",false) + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("you know it...") + } +} +function exerciseJQ25(jQueryDiv){ + $(jQueryDiv).append("
"+ + //content exercise here + ` + $("#img1").("src","/assets/img/great.jpg") + + ` + //content exercise here + +"
") + $(jQueryDiv).append("
"+ + //content exercise here + ` + ` + //content exercise here + +"
") + $("#solution-box").append('') + + $("#solution-button").on("click",validateSolutionFun) + function validateSolutionFun(){ + if( $("#input-solution").val()=="attr"){ + $("#img1").attr("src","/assets/img/great.jpg") + }else{ + $("#solution-box").append('
Try Again!
') + } + } + $("#show-solution-button").on("click",showSolutionFun) + function showSolutionFun(){ + $("#input-solution").val("attr") + } +} \ No newline at end of file diff --git a/assets/js/script.js b/assets/js/script.js index cd91bfb8..89386c15 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -1,19 +1,16 @@ let optionP = $("p") let optionPArr = Array.from(optionP) -console.log(optionP) -console.log(optionPArr) - optionPArr.forEach((element,index) => { element.addEventListener("click", function() { if (findExercisesFun(index)){ - createModal(element, index, findExercisesFun(index).functions) + createModal(element, findExercisesFun(index).functions) }else{ return; } }) }); -function createModal(element, index, cb){ +function createModal(element, cb){ let bigDiv = document.createElement("div") bigDiv.classList.add("modalTransparent") bigDiv.setAttribute("id","modal") @@ -22,7 +19,7 @@ function createModal(element, index, cb){ let smallDiv = document.createElement("div") smallDiv.classList.add("modalSmall") bigDiv.appendChild(smallDiv) - + let titleDiv = document.createElement("div") titleDiv.classList.add("title-container") titleDiv.textContent = element.textContent; @@ -36,7 +33,24 @@ function createModal(element, index, cb){ jScriptDiv.classList.add("javaScript-container") smallDiv.appendChild(jScriptDiv) + let buttonsDiv = document.createElement("div") + buttonsDiv.classList.add("buttons-container") + smallDiv.appendChild(buttonsDiv) + + let button1 = document.createElement("button") + button1.classList.add("buttons-modal") + button1.setAttribute("id","show-solution-button") + button1.textContent = "Show Solution" + buttonsDiv.appendChild(button1) + + let button2 = document.createElement("button") + button2.classList.add("buttons-modal") + button2.setAttribute("id","solution-button") + button2.textContent = "Validate" + buttonsDiv.appendChild(button2) + removeModal(bigDiv) + cb(jQueryDiv, jScriptDiv) } function removeModal(child){ @@ -48,22 +62,76 @@ function removeModal(child){ } }) } -function exerciseJS0(jScriptDiv){ +function exerciseJS13(jScriptDiv){ - let jScriptDivInner1 = document.createElement("div") - jScriptDivInner1.classList.add("jScript-container-inner") - jScriptDivInner1.innerText = "HOLA script" - jScriptDiv.appendChild(jScriptDivInner1) + let jScriptDivInner2 = document.createElement("div") + jScriptDivInner2.classList.add("jScript-container-inner") + jScriptDivInner2.innerText = "CODE" + jScriptDiv.appendChild(jScriptDivInner2) + + let jScriptDivInner3 = document.createElement("div") + jScriptDivInner3.classList.add("jScript-container-inner") + jScriptDivInner3.innerText = "PREVIEW" + jScriptDiv.appendChild(jScriptDivInner3) + + // let jScriptDivInner4 = document.createElement("button") + // jScriptDivInner4.classList.add("jScript-button-inner") + // jScriptDivInner4.innerText = "PREVIEW" + // jScriptDiv.appendChild(jScriptDivInner4) } -function exerciseJS1(jScriptDiv){ +function exerciseJS14(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS15(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS16(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS17(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS18(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS19(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS20(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS21(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS22(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS23(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS24(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS25(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS26(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS27(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS28(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS29(jScriptDiv){ + console.log("hola 1"+jScriptDiv) +} +function exerciseJS30(jScriptDiv){ console.log("hola 1"+jScriptDiv) } - - - // function createContent(parent){ // var t = document.querySelector('#template-exercise-content'); // let tContent = t.content; // parent.appendChild(tContent) -// } - +// } \ No newline at end of file diff --git a/assets/style/style.css b/assets/style/style.css index 14c7380a..6b5ad7ca 100644 --- a/assets/style/style.css +++ b/assets/style/style.css @@ -58,8 +58,8 @@ p{ background-color: rgb(0, 0, 0,0.5); } .modalSmall{ - width: 50%; - height: 50%; + width: 65%; + height: 65%; background-color: black; border-radius: 10px; z-index: 10; @@ -79,23 +79,90 @@ p{ color: crimson; background-color: cyan; border-radius: 10px; - height: 12%; + height: 10%; width: 98%; margin: 1% 1% 0% 1%; } .jQuery-container{ + display: flex; + flex-wrap: wrap; + align-content: flex-start; + justify-content: center; scroll-behavior: smooth; background-color: blue; border-radius: 10px; - height: 85%; + height: 74%; width: 48.5%; margin: 1% 0% 1% 1%; } .javaScript-container{ + display: flex; + flex-wrap: wrap; + align-content: flex-start; + justify-content: center; scroll-behavior: smooth; background-color: coral; border-radius: 10px; - height: 85%; + height: 74%; width: 48.5%; margin: 1%; } +.buttons-container{ + align-items: center; + display: flex; + justify-content: center; + text-align: center; + align-content: center; + color: crimson; + background-color: cyan; + border-radius: 10px; + height: 10%; + width: 98%; + margin: 0% 1% 1% 1%; +} + +.buttons-modal{ + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + border-radius: 10px; + background-color: darkgreen; + margin: 1%; + width: 98%; +} + +/* EXERCISE INNER CONTAINERS */ + +.jScript-container-inner{ + display: flex; + flex-direction: column; + flex-wrap: wrap; + align-items: center; + justify-content: center; + border-radius: 10px; + background-color: white; + margin: 1%; + width: 98%; + height: auto; + padding:5px; +} +.jQuery-container-inner{ + flex-direction: column; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + border-radius: 10px; + background-color: white; + margin: 1%; + width: 98%; + min-height: 35px; + padding:5px; +} + /* EXERCISES */ + + .poor-class{ + background-color:rgb(65, 50, 32); + } + diff --git a/index.html b/index.html index 7c3bf887..bcd00862 100644 --- a/index.html +++ b/index.html @@ -35,43 +35,42 @@

Events

Functions

-

Create

-

Remove

-

Append

-

Prepend

+

Create an HTML element with any text value

+

Remove an HTML element with any text value

+

Append an HTML element with any text value to a parent element

+

Prepend an HTML element with any text value to a parent element

Create and add an HTML element with any text value after another element

Create and add an HTML element with any text value before another element

-

Clone

-

Add a class

-

Remove a class

-

Toggle a class

-

Add a disabled attribute

-

Remove the disabled attribute

-

Set a data-src attribute

-

Remove the data-src attribute

-

Hide

-

Show

-

Fade in

-

Fade out

+

Clone an HTML element within other element

+

Add a class to an HTML item

+

Remove a class to an HTML item

+

Toggle a class of an HTML item

+

Add a disabled attribute to an HTML button

+

Remove the disabled attribute of an HTML button

+

Set a data-src attribute to a img element

+

Remove the data-src attribute of the img element

+

Hide an HTML element on click (display: none)

+

Show an HTML element on click (display: block)

+

Fade in an HTML element using jQuery

+

Fade out an HTML element using jQuery

Selectors

-

Iterate a collection of elements

-

Get the parent element

-

Get the collection of children

-

Get all the elements that have a certain class

-

Get an item by id

-

Get all the elements

-

Get the options of a select element that are selected

-

Change the href attribute of the first element

-

Show an alert with the value of the first "input" of the page

-

Remove all items

-

Animate an item

+

Iterate a collection of elements and apply a change of style on them

+

Get the parent element of a certain element and change its font weight

+

Get the collection of children of a certain element and change its font weight

+

Get all the elements that have a certain class and change their font weight

+

Get an item by id and change its font weight

+

Get all the elements that have a certain class and the display property of none and change their font color and the display itself so it’s visible

+

Get the options of a select element that are selected (attribute selected)

+

Change the href attribute of the first "a" element (You have to create several "a" elements)

+

Show an alert with the value of the first "input" of the page (Create an "input" element to test this case)

+

Remove all items from a specific selector

+

Animate an item after 2 seconds from the initial page load

- \ No newline at end of file + --> +