FREE PREVIEW

You're viewing a free preview

This is a sample of 15 questions from our full collection of 53 interview questions.

Unlock all 53 questions with detailed explanations and code examples

Get Full Access

Basics & Fundamentals

What is jQuery, and how does it differ from plain JavaScript?

jQuery is a fast, lightweight JavaScript library designed to simplify HTML document traversal, manipulation, event handling, and Ajax interactions. It was created by John Resig in 2006 to address cross-browser compatibility issues and provide a more concise syntax for common JavaScript tasks.

Key differences from plain JavaScript:

  • Simplified syntax: jQuery provides a more readable and concise way to write JavaScript code
  • Cross-browser compatibility: jQuery handles browser differences internally, eliminating the need for browser-specific code
  • DOM manipulation: Easier selection and manipulation of DOM elements using CSS-style selectors
  • Method chaining: Multiple operations can be chained together for more efficient code
  • Built-in animations: Simple methods for creating animations and effects
  • Ajax support: Simplified Ajax requests and responses

Example comparison:

// Plain JavaScript
document.getElementById('myElement').style.display = 'none';

// jQuery
$('#myElement').hide();

References:

↑ Back to top

How do you include jQuery in a web page?

There are several ways to include jQuery in a web page:

1. Content Delivery Network (CDN)

<!-- Google CDN -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

<!-- jQuery CDN -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>

<!-- Microsoft CDN -->
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.7.1.min.js"></script>

2. Local Download

<!-- Downloaded jQuery file -->
<script src="js/jquery-3.7.1.min.js"></script>

3. Package Manager (npm, yarn)

npm install jquery
// In your JavaScript file
const $ = require('jquery');
// or
import $ from 'jquery';

Best practices:

  • Use CDN for better performance and caching
  • Always include jQuery before other JavaScript files that depend on it
  • Use minified versions for production

References:

↑ Back to top

What is the purpose of the ready() function (e.g. $(document).ready())?

The $(document).ready() function ensures that jQuery code executes only after the DOM (Document Object Model) is fully constructed, but before all images and other resources have finished loading.

Purpose:

  • Ensures DOM elements are available for manipulation
  • Executes code before the window.onload event
  • Prevents errors when trying to access elements that haven't been loaded yet
  • Provides a safe environment for jQuery code execution

Syntax variations:

// Full syntax
$(document).ready(function() {
    // Your code here
});

// Shorthand syntax
$(function() {
    // Your code here
});

// Arrow function (ES6)
$(() => {
    // Your code here
});

Comparison with window.onload:

// Waits for DOM to be ready
$(document).ready(function() {
    console.log("DOM is ready!");
});

// Waits for all resources to load
$(window).on('load', function() {
    console.log("Everything is loaded!");
});

References:

↑ Back to top

How can you check which version of jQuery is in use at runtime?

There are several methods to check the jQuery version at runtime:

1. Using $.fn.jquery

console.log($.fn.jquery); // Output: "3.7.1"

2. Using jQuery.fn.jquery

console.log(jQuery.fn.jquery); // Output: "3.7.1"

3. Checking in browser console

// Type in browser console
$.fn.jquery
// or
jQuery.fn.jquery

4. Conditional version checking

if ($.fn.jquery) {
    console.log("jQuery version: " + $.fn.jquery);
    
    // Version comparison
    var version = $.fn.jquery.split('.');
    var major = parseInt(version[0]);
    var minor = parseInt(version[1]);
    
    if (major >= 3) {
        console.log("Using jQuery 3.x or higher");
    }
} else {
    console.log("jQuery is not loaded");
}

5. Feature detection

// Check if specific jQuery features are available
if (typeof $.fn.on === 'function') {
    console.log("jQuery 1.7+ features available");
}

References:

↑ Back to top

Explain the concept of the $ symbol in jQuery.

The $ symbol in jQuery is an alias for the jQuery function and serves as the main entry point for all jQuery functionality.

Key concepts:

1. Function Alias

// These are equivalent
$('#myElement')
jQuery('#myElement')

2. Multiple Purposes

The $ symbol can be used in different ways:

// Selector function
$('#id')           // Select by ID
$('.class')        // Select by class
$('element')       // Select by element type

// Document ready
$(document).ready(function() {
    // Code here
});

// Create DOM elements
$('<div>Hello</div>')

// Wrap existing elements
$(existingElement)

3. Namespace Protection

// No conflict mode
var jq = jQuery.noConflict();
jq('#myElement').hide();

// Custom alias
var $j = jQuery.noConflict();
$j('#myElement').show();

4. Context Usage

// Global context
var element = $('#myElement');

// Within functions
function myFunction() {
    var $ = jQuery; // Local alias
    $('#localElement').hide();
}

5. Chaining Support

// Method chaining
$('#myElement')
    .addClass('highlight')
    .fadeIn(500)
    .delay(1000)
    .fadeOut(500);

Best practices:

  • Always use $ or jQuery consistently
  • Use noConflict() when working with other libraries that use $
  • Understand that $ is just a shorthand for jQuery

References:

↑ Back to top

jQuery Selectors

What are the different types of selectors available in jQuery (e.g., by element, class, ID)?

jQuery provides several types of selectors for targeting DOM elements:

Basic Selectors:

  • Element Selector: $("p") - selects all <p> elements
  • ID Selector: $("#myId") - selects element with id="myId"
  • Class Selector: $(".myClass") - selects all elements with class="myClass"
  • Universal Selector: $("*") - selects all elements

Attribute Selectors:

  • $("[attribute]") - elements with specified attribute
  • $("[attribute='value']") - elements with attribute equal to value
  • $("[attribute!='value']") - elements with attribute not equal to value
  • $("[attribute^='value']") - elements with attribute starting with value
  • $("[attribute$='value']") - elements with attribute ending with value
  • $("[attribute*='value']") - elements with attribute containing value

Pseudo Selectors:

  • :first - first matched element
  • :last - last matched element
  • :even - even-indexed elements
  • :odd - odd-indexed elements
  • :eq(index) - element at specific index
  • :gt(index) - elements with index greater than specified
  • :lt(index) - elements with index less than specified

Form Selectors:

  • :input - all input elements
  • :text - text input elements
  • :checkbox - checkbox elements
  • :radio - radio button elements
  • :submit - submit buttons
  • :button - button elements

Visibility Selectors:

  • :visible - visible elements
  • :hidden - hidden elements

Reference: jQuery Selectors Documentation

↑ Back to top

How would you select multiple elements (e.g. multiple classes or IDs) at the same time?

jQuery allows multiple element selection using comma-separated selectors:

// Multiple classes
$(".class1, .class2, .class3")

// Multiple IDs
$("#id1, #id2, #id3")

// Mixed selectors
$("p, .highlight, #header")

// Complex combinations
$("div.container, span.text, input[type='text']")

// Multiple attribute selectors
$("[data-role='button'], [data-role='link']")

Examples:

// Select all paragraphs and divs
$("p, div").css("color", "blue");

// Select multiple specific elements
$("#header, #footer, .sidebar").addClass("styled");

// Select form elements of different types
$("input[type='text'], input[type='email'], textarea").val("");

Performance Tip: When possible, use more specific selectors or cache results to avoid repeated DOM queries.

Reference: jQuery Multiple Selector Documentation

↑ Back to top

How do you handle performance considerations when using complex selectors?

Performance optimization strategies for jQuery selectors:

1. Selector Specificity and Efficiency:

// Inefficient - searches entire DOM
$(".myClass")

// More efficient - limits search scope
$("#container .myClass")

// Most efficient - direct ID lookup first
$("#container").find(".myClass")

2. Caching Selectors:

// Inefficient - multiple DOM queries
$(".expensive-selector").addClass("active");
$(".expensive-selector").fadeIn();
$(".expensive-selector").click(handler);

// Efficient - single DOM query with caching
var $elements = $(".expensive-selector");
$elements.addClass("active");
$elements.fadeIn();
$elements.click(handler);

3. Right-to-Left Selector Reading:

// Less efficient - broad initial search
$("div p .highlight")

// More efficient - specific rightmost selector
$(".highlight").filter("p div")

4. Use Native Methods When Possible:

// Slower
$("#myId")

// Faster for single ID
$(document.getElementById("myId"))

// Faster for classes in modern browsers
$(document.getElementsByClassName("myClass"))

5. Avoid Universal Selectors:

// Avoid
$("*")
$("[data-*]")

// Prefer specific selectors
$("div, span, p")

6. Context-Specific Searches:

// Search within specific context
var $container = $("#container");
$container.find(".item"); // Faster than $(".item", $container)

References:

↑ Back to top

How do attribute selectors in jQuery work (e.g. $("[type='text']"))?

jQuery attribute selectors allow you to select elements based on their attributes and values:

Basic Attribute Selectors:

// Elements with specific attribute (regardless of value)
$("[title]") // All elements with title attribute

// Elements with attribute equal to value
$("[type='text']") // Input elements with type="text"
$("[class='highlight']") // Elements with class="highlight"

// Elements with attribute not equal to value
$("[type!='hidden']") // Input elements where type is not "hidden"

Advanced Attribute Selectors:

// Attribute value starts with
$("[class^='btn']") // Elements with class starting with "btn"
$("[href^='https']") // Links starting with "https"

// Attribute value ends with
$("[src$='.jpg']") // Images with src ending in ".jpg"
$("[class$='-active']") // Elements with class ending in "-active"

// Attribute value contains
$("[title*='help']") // Elements with title containing "help"
$("[class*='navigation']") // Elements with class containing "navigation"

// Attribute value contains word (space-separated)
$("[class~='active']") // Elements with "active" as a complete word in class

// Attribute value starts with value or value followed by hyphen
$("[lang|='en']") // Elements with lang="en" or lang="en-US"

Multiple Attribute Selectors:

// Combine multiple attribute conditions
$("[type='text'][name='email']") // Text inputs with name="email"
$("[data-role='button'][disabled]") // Disabled elements with data-role="button"

Practical Examples:

// Form validation
$("input[type='text'][required]").addClass("required-field");

// Image gallery
$("img[src$='.jpg'], img[src$='.png']").addClass("image-item");

// External links
$("a[href^='http']:not([href^='http://mydomain.com'])").attr("target", "_blank");

// Data attributes
$("[data-toggle='modal']").click(function() {
    // Handle modal toggle
});

Performance Notes:

  • Attribute selectors can be slower than ID or class selectors
  • Use specific contexts when possible: $("#form").find("[type='text']")
  • Cache results for repeated use

Reference: jQuery Attribute Selectors Documentation

↑ Back to top

What is the difference between .find() and .children() when traversing the DOM?

The key differences between .find() and .children() relate to traversal depth and scope:

.children() Method:

  • Traverses only direct children (one level deep)
  • Does not search nested descendants
  • More performant for shallow searches
  • Can accept optional selector parameter

.find() Method:

  • Traverses all descendants (multiple levels deep)
  • Searches through entire descendant tree
  • More comprehensive but potentially slower
  • Requires a selector parameter

Code Examples:

<div id="parent">
    <div class="child">Direct child
        <div class="grandchild">Grandchild
            <div class="great-grandchild">Great-grandchild</div>
        </div>
    </div>
    <div class="child">Another direct child</div>
</div>
var $parent = $("#parent");

// .children() - finds only direct children
$parent.children(); // Returns 2 divs (direct children only)
$parent.children(".child"); // Returns 2 divs with class "child"
$parent.children(".grandchild"); // Returns empty set (not direct children)

// .find() - finds all descendants
$parent.find("div"); // Returns all nested divs (4 total)
$parent.find(".grandchild"); // Returns 1 div (found in descendants)
$parent.find(".great-grandchild"); // Returns 1 div (found deep in tree)

Performance Comparison:

// Faster - limited scope
$("#container").children(".item");

// Slower - searches entire descendant tree
$("#container").find(".item");

// Most efficient for deep searches
$("#container").find(".deeply-nested-class");

Practical Usage Examples:

// Navigation menu - direct menu items only
$(".nav-menu").children("li").addClass("menu-item");

// Form validation - all input fields regardless of nesting
$("form").find("input, textarea, select").each(function() {
    // Validate each field
});

// Table operations
$("table").children("tbody").children("tr"); // Direct approach
$("table").find("td"); // Find all cells regardless of structure

// Event delegation with children
$(".tab-container").children(".tab").click(function() {
    // Handle direct tab clicks only
});

// Search within complex structures
$(".widget").find("[data-action]").click(function() {
    // Handle any nested elements with data-action
});

Method Chaining:

// Combine both methods
$("#parent")
    .children(".section")
    .find(".content")
    .addClass("highlighted");

Key Recommendations:

  • Use .children() when you need only direct descendants
  • Use .find() when searching for elements at any depth
  • Consider performance implications for large DOM trees
  • Cache results when performing multiple operations

References:

↑ Back to top

DOM Manipulation & Traversing

How do you add or remove an HTML element dynamically in jQuery?

Adding Elements:

  • Use .append() to add content at the end of selected elements
  • Use .prepend() to add content at the beginning of selected elements
  • Use .after() to insert content after selected elements
  • Use .before() to insert content before selected elements
// Adding elements
$('#container').append('<div>New element</div>');
$('#container').prepend('<div>First element</div>');
$('#element').after('<div>After element</div>');
$('#element').before('<div>Before element</div>');

// Creating and adding elements
var newDiv = $('<div>').text('Dynamic content');
$('#container').append(newDiv);

Removing Elements:

  • Use .remove() to remove selected elements and their children completely
  • Use .empty() to remove all child elements but keep the selected element
  • Use .detach() to remove elements but keep their data and events
// Removing elements
$('#elementToRemove').remove();
$('#container').empty();
var detachedElement = $('#element').detach(); // Can be reattached later

References:

↑ Back to top

How can you modify the text or HTML content of selected elements?

jQuery provides several methods to modify element content:

Text Content:

// Get text content
var textContent = $('#element').text();

// Set text content
$('#element').text('New text content');

// Append text
$('#element').text(function(index, currentText) {
    return currentText + ' Additional text';
});

HTML Content:

// Get HTML content
var htmlContent = $('#element').html();

// Set HTML content
$('#element').html('<strong>Bold text</strong>');

// Modify HTML content
$('#element').html(function(index, currentHTML) {
    return currentHTML + '<em>Italic text</em>';
});

Form Values:

// Get/set input values
var inputValue = $('#inputField').val();
$('#inputField').val('New value');

// Get/set attributes
var srcValue = $('#image').attr('src');
$('#image').attr('src', 'new-image.jpg');

References:

↑ Back to top

What is the difference between .html() and .text()?

The key differences between .html() and .text() are:

.html() Method:

  • Returns or sets the HTML content including all HTML tags
  • Interprets HTML markup and renders it as HTML elements
  • Can execute JavaScript if script tags are included
  • Preserves formatting and structure
$('#element').html('<strong>Bold</strong> text');
// Result: Bold text (with bold formatting)

var content = $('#element').html();
// Returns: "<strong>Bold</strong> text"

.text() Method:

  • Returns or sets only the text content, stripping all HTML tags
  • Treats HTML tags as plain text, not markup
  • Safer from XSS attacks as it doesn't execute scripts
  • Automatically escapes special characters
$('#element').text('<strong>Bold</strong> text');
// Result: <strong>Bold</strong> text (displayed as plain text)

var content = $('#element').text();
// Returns: "Bold text" (without HTML tags)

Security Considerations:

  • .text() is safer when dealing with user input as it prevents XSS attacks
  • .html() should be used cautiously with untrusted content

References:

↑ Back to top

How do you clone elements in jQuery, and when might you need to do this?

Cloning Elements:

// Basic clone (structure only)
var clonedElement = $('#originalElement').clone();

// Clone with events and data
var clonedElementWithEvents = $('#originalElement').clone(true);

// Clone and append to different location
$('#originalElement').clone().appendTo('#newContainer');

// Clone with deep copy (including nested elements)
var deepClone = $('#originalElement').clone(true, true);

Parameters:

  • clone() - Clones element structure only
  • clone(true) - Clones element with events and data
  • clone(true, true) - Deep clone with all events and data for nested elements

Common Use Cases:

  1. Creating Template Elements:
// Use a hidden template to create multiple similar elements
var template = $('#userTemplate').clone().removeClass('hidden');
template.find('.username').text(userData.name);
$('#userList').append(template);
  1. Drag and Drop Operations:
// Clone elements during drag operations
$('.draggable').on('dragstart', function() {
    var clone = $(this).clone();
    // Use clone for drag operation
});
  1. Form Duplication:
// Clone form sections for dynamic forms
$('#addSection').click(function() {
    var newSection = $('#formSection').clone();
    newSection.find('input').val(''); // Clear values
    $('#formContainer').append(newSection);
});
  1. Backup Before Modification:
// Keep original before making changes
var backup = $('#element').clone();
// Make modifications...
// Restore if needed: $('#element').replaceWith(backup);

References:

↑ Back to top

Explain how .append(), .prepend(), .after(), and .before() differ.

These methods differ in where they insert content relative to the selected element:

.append() - Inserts content at the end inside the selected element:

$('#container').append('<div>New child</div>');
// Result: <div id="container">existing content<div>New child</div></div>

.prepend() - Inserts content at the beginning inside the selected element:

$('#container').prepend('<div>First child</div>');
// Result: <div id="container"><div>First child</div>existing content</div>

.after() - Inserts content after the selected element (as a sibling):

$('#element').after('<div>After element</div>');
// Result: <div id="element">content</div><div>After element</div>

.before() - Inserts content before the selected element (as a sibling):

$('#element').before('<div>Before element</div>');
// Result: <div>Before element</div><div id="element">content</div>

Visual Representation:

// Original structure
<div id="container">
    <div id="element">Original content</div>
</div>

// After operations:
$('#container').prepend('<div>Prepended</div>');
$('#element').before('<div>Before</div>');
$('#element').after('<div>After</div>');
$('#container').append('<div>Appended</div>');

// Result:
<div id="container">
    <div>Prepended</div>          <!-- prepend() -->
    <div>Before</div>             <!-- before() -->
    <div id="element">Original content</div>
    <div>After</div>              <!-- after() -->
    <div>Appended</div>           <!-- append() -->
</div>

Counterpart Methods:

  • .appendTo() - Reverse of .append()
  • .prependTo() - Reverse of .prepend()
  • .insertAfter() - Reverse of .after()
  • .insertBefore() - Reverse of .before()

References:

↑ Back to top

Want more questions?

You've seen 15 sample questions. Unlock all 53 En interview questions with detailed explanations, code examples, and expert insights.

53+ questions
Code examples
Expert explanations
Instant access
Unlock Full Access