Filtering Collections

Back

Loading concept...

🎯 jQuery DOM Traversal: Filtering Collections

The Treasure Hunt Analogy 🏴‍☠️

Imagine you have a big toy box filled with different toys—cars, dolls, blocks, and balls. Sometimes you want to find just ONE specific toy, or maybe you want ALL the red toys but NOT the blue ones.

jQuery filtering methods are like magical sorting tools that help you pick EXACTLY which toys (elements) you want from your toy box (webpage)!


🥇 First and Last Methods

The Story

Think of a line of kids waiting for ice cream. The first kid gets served first, and the last kid gets served last. Simple!

What They Do

  • .first() → Gets the FIRST element from a group
  • .last() → Gets the LAST element from a group

Example

<ul>
  <li>Apple</li>
  <li>Banana</li>
  <li>Cherry</li>
</ul>
// Get the first fruit
$("li").first().css("color", "green");
// Result: "Apple" turns green!

// Get the last fruit
$("li").last().css("color", "red");
// Result: "Cherry" turns red!

Real Life Use

  • Highlight the first item in a menu
  • Style the last row in a table differently

🔢 Eq Method

The Story

Imagine numbered lockers at school: Locker 0, Locker 1, Locker 2…

The .eq() method is like saying “Open locker number 2!” You pick ONE specific locker by its number.

What It Does

.eq(index) → Gets the element at a specific position (starting from 0!)

Example

<div class="box">Box 0</div>
<div class="box">Box 1</div>
<div class="box">Box 2</div>
<div class="box">Box 3</div>
// Get the box at position 2
$(".box").eq(2).css("background", "yellow");
// Result: "Box 2" turns yellow!

// Negative numbers count from end!
$(".box").eq(-1).css("background", "pink");
// Result: "Box 3" (last one) turns pink!

🧠 Remember

  • Counting starts at 0, not 1!
  • Use negative numbers to count from the end
  • -1 = last, -2 = second to last

🔍 Filter Method

The Story

You have a bucket of mixed LEGO pieces. You want ONLY the red ones. The .filter() method is your magical red-color-detector!

What It Does

.filter(selector) → Keeps ONLY elements that match your rule

Example

<p class="intro">Hello!</p>
<p class="content">Story here</p>
<p class="intro">Welcome!</p>
<p class="footer">Goodbye</p>
// Keep only paragraphs with class "intro"
$("p").filter(".intro")
      .css("font-weight", "bold");
// Result: "Hello!" and "Welcome!" become bold!

Advanced: Filter with Function

// Keep only even-indexed items
$("li").filter(function(index) {
  return index % 2 === 0;
}).css("background", "lightblue");

Real Life Use

  • Show only “active” menu items
  • Highlight products that are “on sale”

🚫 Not Method

The Story

The opposite of filter! Instead of “give me the red LEGOs,” it’s “give me EVERYTHING EXCEPT the red ones!”

What It Does

.not(selector) → Removes elements that match your rule

Example

<button class="btn">Save</button>
<button class="btn disabled">Delete</button>
<button class="btn">Cancel</button>
// Get all buttons EXCEPT disabled ones
$(".btn").not(".disabled")
         .css("cursor", "pointer");
// Result: "Save" and "Cancel" get pointer
// "Delete" is excluded!

Filter vs Not

graph TD A["All Elements"] --> B{Filter or Not?} B -->|.filter| C["Keep Matching"] B -->|.not| D["Remove Matching"] C --> E["✅ Selected"] D --> F["✅ Remaining"]

Real Life Use

  • Enable all form fields except read-only ones
  • Select all items that aren’t completed

📦 Has Method

The Story

Imagine toy boxes. Some boxes have a teddy bear inside, some don’t. The .has() method finds boxes that CONTAIN what you’re looking for!

What It Does

.has(selector) → Keeps elements that contain specific descendants

Example

<div class="card">
  <span class="badge">New!</span>
  <p>Product A</p>
</div>
<div class="card">
  <p>Product B</p>
</div>
<div class="card">
  <span class="badge">Sale!</span>
  <p>Product C</p>
</div>
// Find cards that HAVE a badge inside
$(".card").has(".badge")
          .css("border", "2px solid gold");
// Result: Product A and C cards get gold border
// Product B has no badge, so it's excluded!

Real Life Use

  • Highlight list items that contain links
  • Style divs that have images inside

✅ Is Method

The Story

This is a YES/NO question! “Is this toy a car?” The answer is true or false.

What It Does

.is(selector) → Returns true or false (doesn’t select elements!)

Example

<input type="text" class="required">
<input type="text">
<input type="text" disabled>
// Check if first input is required
var firstInput = $("input").first();

if (firstInput.is(".required")) {
  console.log("This field is required!");
}
// Output: "This field is required!"

// Check if an input is disabled
var lastInput = $("input").last();

if (lastInput.is(":disabled")) {
  console.log("This input is disabled");
}
// Output: "This input is disabled"

Different from Others!

graph TD A[".is Method"] --> B["Returns Boolean"] B --> C["true"] B --> D["false"] E["Other Methods"] --> F["Returns jQuery Object"] F --> G["Selected Elements"]

Real Life Use

  • Check if checkbox is checked before submit
  • Verify if element has a specific class

✂️ Slice Method

The Story

Imagine a loaf of bread. You don’t want the whole loaf—you want slices 2 through 5! The .slice() method cuts out a PORTION of your elements.

What It Does

.slice(start, end) → Gets elements from position start up to (but not including) end

Example

<li>Item 0</li>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
// Get items 1, 2, and 3 (index 1 to 4)
$("li").slice(1, 4)
       .css("color", "blue");
// Result: Item 1, 2, 3 turn blue!
// Item 0 and Items 4, 5 stay unchanged

// From index 3 to the end
$("li").slice(3)
       .css("background", "yellow");
// Result: Item 3, 4, 5 get yellow background

Visual Guide

Index:   0    1    2    3    4    5
Items: [ A ][ B ][ C ][ D ][ E ][ F ]

slice(1, 4) selects:
       [ A ][✅B][✅C][✅D][ E ][ F ]

slice(3) selects:
       [ A ][ B ][ C ][✅D][✅E][✅F]

Real Life Use

  • Paginate: show items 10-20 of a list
  • Hide first few items, show rest

🎯 Quick Comparison Table

Method What It Does Returns
.first() Gets first element jQuery
.last() Gets last element jQuery
.eq(n) Gets element at index n jQuery
.filter() Keeps matching elements jQuery
.not() Removes matching elements jQuery
.has() Keeps elements containing X jQuery
.is() Checks if matches Boolean
.slice() Gets range of elements jQuery

🚀 Putting It All Together

// Complex example: Style a product list
$(".product")
  .not(".out-of-stock")  // Exclude out of stock
  .has(".discount")       // Only those with discount
  .slice(0, 5)           // First 5 results
  .first()               // The very first one
  .css("border", "3px solid gold");

This chain:

  1. Starts with all products
  2. Removes out-of-stock items
  3. Keeps only discounted items
  4. Takes first 5 of those
  5. Highlights the first one!

🎉 You Did It!

You now know how to:

  • Pick the first or last element
  • Select by position with .eq()
  • Keep matching elements with .filter()
  • Exclude elements with .not()
  • Find elements containing others with .has()
  • Check conditions with .is()
  • Get a range with .slice()

These tools make you a jQuery filtering ninja! 🥷

Loading story...

Story - Premium Content

Please sign in to view this story and start learning.

Upgrade to Premium to unlock full access to all stories.

Stay Tuned!

Story is coming soon.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.