JSFiddle - React, Tailwind, and code Playground
by Ryan Morris
HTML
<div id="container">
<h1>Hello, DOM!</h1>
<button id="sorter">Sort fruit</button>
<p>This is some old fruit:</p>
<ul class="old">
<li class="glyph-apple mushy" data-type="red">Apples</li>
<li class="glyph-pear spoiled">Pears</li>
<li class="glyph-cherry">Cherries</li>
</ul>
<p>This is some fresh fruit:</p>
<ul class="new"></ul>
</div>
CSS
.spoiled{
background-color:#ccc;
}
.fresh{
border:1px dotted green;
}
ul li,
.glyph{
padding:3px 0 3px 25px;
background-repeat:no-repeat;
background-size:20px 20px;
background-position:middle left;
}
.glyph-cherry{
background-image:url('http://cdn.flaticon.com/png/64/2146.png');
}
.glyph-apple{
background-image: url('http://cdn.flaticon.com/png/64/18251.png');
}
.glyph-pear{
background-image:url('http://cdn.flaticon.com/png/64/2158.png');
}
.glyph-grapes{
background-image:url('http://cdn.flaticon.com/png/64/18353.png');
}
JavaScript
// Content manipulation
//
// Use jQuery to complete the following
// You will be adding, moving, and manipulating content
//
// Warnings:
// a. Be sure to write your code so it runs on document ready only
// b. Take care not to REMOVE classes or attributes unless
// told to do so in each task below
$().ready(function() {
// 1
// Create a new "Grapes" list item in the "new" list
// Give it two additional classes: "fresh" and "glyph-grapes"
// Then style it with white text and a purple background
function sort() {
var $newUl = $(".new");
var $grapesLi = $("<li>Grapes</li>");
$grapesLi.addClass("fresh glyph-grapes");
$grapesLi.css({
color: "white",
backgroundColor: "purple"
});
$grapesLi.appendTo($newUl);
// 2
// Remove any "spoiled" (based on class)
// list items from the page entirely
$(".spoiled").remove();
// 3
// Move "Cherries" into the "new" list as the last item
// Add text to the list item, "(10)" to indicate you have ten cherries.
// Resulting text: "Cherries (10)"
$(".glyph-cherry").appendTo($newUl).append(" (10)");
// variant
$(".glyph-cherry").appendTo($newUl).html(function() {
return $(this).html() + " (10)";
});
// 4
// Copy "Apples" into the "new" list as the first item
// Set it's data-type attribute value from "red" to "green"
// Remove the class "mushy" and give it a class of "fresh"
$applesCopy = $(".glyph-apple")
.clone()
.prependTo(".new");
$applesCopy
.attr('data-type', ' green')
.removeClass('mushy')
.addClass('fresh');
}
// 5
// Bring it together
// Write a function, "sort()" that will perform all
// the manipulations you wrote above
// To test, uncomment the sort() invokation line
// then press the sort button
$("#sorter").on('click', function() {
sort(); //<!-- uncomment me when you have written...