* chore(learn): audit bootstrap * chore(learn): audit FE projects * chore(learn): audit jQuery * chore(learn): audit React * chore(learn): audit react-redux * chore(learn): audit redux * chore(learn): audit sass * fix: apply review suggestions Co-authored-by: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> * fix: apply non-suggestions * chore: remove comments from code Co-authored-by: Randell Dawson <5313213+RandellDawson@users.noreply.github.com>
		
			
				
	
	
		
			143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| id: bad87fee1348bd9aed908626
 | ||
| title: Target the Same Element with Multiple jQuery Selectors
 | ||
| challengeType: 6
 | ||
| forumTopicId: 18322
 | ||
| required:
 | ||
|   - link: 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.2.0/animate.css'
 | ||
| dashedName: target-the-same-element-with-multiple-jquery-selectors
 | ||
| ---
 | ||
| 
 | ||
| # --description--
 | ||
| 
 | ||
| Now you know three ways of targeting elements: by type: `$("button")`, by class: `$(".btn")`, and by id `$("#target1")`.
 | ||
| 
 | ||
| Although it is possible to add multiple classes in a single `.addClass()` call, let's add them to the same element in *three separate ways*.
 | ||
| 
 | ||
| Using `.addClass()`, add only one class at a time to the same element, three different ways:
 | ||
| 
 | ||
| Add the `animated` class to all elements with type `button`.
 | ||
| 
 | ||
| Add the `shake` class to all the buttons with class `.btn`.
 | ||
| 
 | ||
| Add the `btn-primary` class to the button with id `#target1`.
 | ||
| 
 | ||
| **Note:** You should only be targeting one element and adding only one class at a time. Altogether, your three individual selectors will end up adding the three classes `shake`, `animated`, and `btn-primary` to `#target1`.
 | ||
| 
 | ||
| # --hints--
 | ||
| 
 | ||
| Your code should use the `$("button")` selector.
 | ||
| 
 | ||
| ```js
 | ||
| assert(code.match(/\$\s*?\(\s*?(?:'|")\s*?button\s*?(?:'|")/gi));
 | ||
| ```
 | ||
| 
 | ||
| Your code should use the `$(".btn")` selector.
 | ||
| 
 | ||
| ```js
 | ||
| assert(code.match(/\$\s*?\(\s*?(?:'|")\s*?\.btn\s*?(?:'|")/gi));
 | ||
| ```
 | ||
| 
 | ||
| Your code should use the `$("#target1")` selector.
 | ||
| 
 | ||
| ```js
 | ||
| assert(code.match(/\$\s*?\(\s*?(?:'|")\s*?#target1\s*?(?:'|")/gi));
 | ||
| ```
 | ||
| 
 | ||
| You should only add one class with each of your three selectors.
 | ||
| 
 | ||
| ```js
 | ||
| assert(
 | ||
|   code.match(/addClass/g) &&
 | ||
|     code.match(/addClass\s*?\(\s*?('|")\s*?[\w-]+\s*?\1\s*?\)/g).length > 2
 | ||
| );
 | ||
| ```
 | ||
| 
 | ||
| Your `#target1` element should have the classes `animated`‚ `shake` and `btn-primary`.
 | ||
| 
 | ||
| ```js
 | ||
| assert(
 | ||
|   $('#target1').hasClass('animated') &&
 | ||
|     $('#target1').hasClass('shake') &&
 | ||
|     $('#target1').hasClass('btn-primary')
 | ||
| );
 | ||
| ```
 | ||
| 
 | ||
| You should only use jQuery to add these classes to the element.
 | ||
| 
 | ||
| ```js
 | ||
| assert(!code.match(/class.*animated/g));
 | ||
| ```
 | ||
| 
 | ||
| # --seed--
 | ||
| 
 | ||
| ## --seed-contents--
 | ||
| 
 | ||
| ```html
 | ||
| <script>
 | ||
|   $(document).ready(function() {
 | ||
| 
 | ||
|   });
 | ||
| </script>
 | ||
| 
 | ||
| <!-- Only change code above this line -->
 | ||
| 
 | ||
| <div class="container-fluid">
 | ||
|   <h3 class="text-primary text-center">jQuery Playground</h3>
 | ||
|   <div class="row">
 | ||
|     <div class="col-xs-6">
 | ||
|       <h4>#left-well</h4>
 | ||
|       <div class="well" id="left-well">
 | ||
|         <button class="btn btn-default target" id="target1">#target1</button>
 | ||
|         <button class="btn btn-default target" id="target2">#target2</button>
 | ||
|         <button class="btn btn-default target" id="target3">#target3</button>
 | ||
|       </div>
 | ||
|     </div>
 | ||
|     <div class="col-xs-6">
 | ||
|       <h4>#right-well</h4>
 | ||
|       <div class="well" id="right-well">
 | ||
|         <button class="btn btn-default target" id="target4">#target4</button>
 | ||
|         <button class="btn btn-default target" id="target5">#target5</button>
 | ||
|         <button class="btn btn-default target" id="target6">#target6</button>
 | ||
|       </div>
 | ||
|     </div>
 | ||
|   </div>
 | ||
| </div>
 | ||
| ```
 | ||
| 
 | ||
| # --solutions--
 | ||
| 
 | ||
| ```html
 | ||
| <script>
 | ||
|   $(document).ready(function() {
 | ||
|     $("button").addClass("animated");
 | ||
|     $(".btn").addClass("shake");
 | ||
|     $("#target1").addClass("btn-primary");
 | ||
|   });
 | ||
| </script>
 | ||
| 
 | ||
| <!-- Only change code above this line -->
 | ||
| 
 | ||
| <div class="container-fluid">
 | ||
|   <h3 class="text-primary text-center">jQuery Playground</h3>
 | ||
|   <div class="row">
 | ||
|     <div class="col-xs-6">
 | ||
|       <h4>#left-well</h4>
 | ||
|       <div class="well" id="left-well">
 | ||
|         <button class="btn btn-default target" id="target1">#target1</button>
 | ||
|         <button class="btn btn-default target" id="target2">#target2</button>
 | ||
|         <button class="btn btn-default target" id="target3">#target3</button>
 | ||
|       </div>
 | ||
|     </div>
 | ||
|     <div class="col-xs-6">
 | ||
|       <h4>#right-well</h4>
 | ||
|       <div class="well" id="right-well">
 | ||
|         <button class="btn btn-default target" id="target4">#target4</button>
 | ||
|         <button class="btn btn-default target" id="target5">#target5</button>
 | ||
|         <button class="btn btn-default target" id="target6">#target6</button>
 | ||
|       </div>
 | ||
|     </div>
 | ||
|   </div>
 | ||
| </div>
 | ||
| ```
 |