Fading Coder

One Final Commit for the Last Sprint

Home > Tech > Content

Essential jQuery DOM Manipulation and AJAX Patterns

Tech Jun 1 58

This guide covers foundational jQuery techniques for dynamic DOM updates and asynchronous communication—focused on practical, production-relevant patterns rather than legacy workarounds.

Event Binding After Dynamic Content Updates

When elements are re-rendered (e.g., table rows rebuilt via .html()), direct event handlers attached to child elements break. Instead of rebinding repeatedly, use delegated event handling:

// ❌ Fragile: binds only to existing elements
$('#deleteBtn').on('click', handleDelete);

// ✅ Robust: delegates to a stable ancestor
$('#tableContainer').on('click', '[data-action="delete"]', handleDelete);

JSON Handling in JavaScript

  • JSON.parse(str): Converts a JSON string into a native JavaScript object.
  • JSON.stringify(obj): Serializes a JavaScript value into a JSON-formatted string.

DOM Elemant Selection

Selectors mirror CSS syntax. Prioritize ID and class selectors for clarity and performance:

const triggerButton = $('.action-trigger');
const sidebarPanel = $('#navigation-sidebar');

Inserting Content

Method Description Example
.append() Adds content as the last child $target.append('<span>Appended</span>');
.prepend() Adds content as the first child $target.prepend('<span>Prepended</span>');
.before() Inserts before the selected element $target.before('<div class="spacer"></div>');
.after() Inserts after the selected element $target.after('<p>Follow-up text</p>');
.html() Replaces inner HTML entirely $target.html('<strong>New content</strong>');
.clone(true) Duplicates element + bound events $source.clone(true).insertAfter($target);

Removing Elements

  • .remove(): Removes matched elements and all associated data/events.
  • .empty(): Clears children but retains the element itself.
  • .detach(): Removes elements while preserving event handlers and jQuery data—ideal for temporary removal and reinsertion.

Form Interaction

Retreiving Input Values

Use .val() for form controls (<input>, <select>, <textarea>):

const username = $('#username-field').val();

Two-Way Sync Example

Bind input changes to update a display element:

$('#sync-input').on('input', function() {
  $('#display-output').text($(this).val());
});

Radio Group Selection

Check selectino state and retrieve value safely:

const selectedRadio = $('input[name="theme"]:checked');
if (selectedRadio.length) {
  console.log('Active theme:', selectedRadio.val());
} else {
  console.warn('No theme selected');
}

Select Dropdown Value

const selectedOption = $('#country-select option:selected').val();

Boolean Attribute Management

Prefer .prop() over .attr() for disabled, checked, readonly:

// Enable a button
$('#submit-btn').prop('disabled', false);

// Check a checkbox
$('#newsletter-optin').prop('checked', true);

// Make field read-only
$('#timestamp').prop('readonly', true);

File Input Handling

Access uploaded files and build FormData:

$('#upload-input').on('change', function() {
  const fileInput = this;
  const files = fileInput.files;

  if (files.length > 0) {
    const uploadData = new FormData();
    Array.from(files).forEach((file, idx) => {
      uploadData.append(`file[${idx}]`, file);
    });

    // Use with AJAX below
  }
});

Trigger File Dialog Programmatically

Hide the native input and proxy clicks through a custom button:

<button type="button" id="browse-btn">Choose Files</button>
<input type="file" id="hidden-file" style="display:none;" multiple>

$('#browse-btn').on('click', () => $('#hidden-file').click());

AJAX Requests

GET Request

$.ajax({
  url: '/api/users',
  method: 'GET',
  dataType: 'json',
  success: (data) => renderUserList(data),
  error: (xhr) => console.error('Fetch failed:', xhr.status)
});

POST with Form Data

$.ajax({
  url: '/api/submit',
  method: 'POST',
  data: $('#contact-form').serialize(),
  success: (response) => showSuccess(response.message),
  error: (xhr) => showError(xhr.responseJSON?.error || 'Submission failed')
});

File Upload via FormData

const formData = new FormData($('#upload-form')[0]);

$.ajax({
  url: '/api/upload',
  method: 'POST',
  data: formData,
  processData: false,
  contentType: false,
  success: (res) => console.log('Upload complete:', res),
  error: (err) => alert('Upload failed: ' + err.statusText)
});

JSON Payload Submission

const payload = { title: 'Report Q3', tags: ['finance', 'summary'] };

$.ajax({
  url: '/api/documents',
  method: 'POST',
  data: JSON.stringify(payload),
  contentType: 'application/json',
  dataType: 'json',
  success: (res) => console.log('Document created:', res.id),
  error: (err) => console.error('JSON send error:', err)
});

Tags: jQuery

Related Articles

Understanding Strong and Weak References in Java

Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...

SBUS Signal Analysis and Communication Implementation Using STM32 with Fus Remote Controller

Overview In a recent project, I utilized the SBUS protocol with the Fus remote controller to control a vehicle's basic operations, including movement, lights, and mode switching. This article is aimed...

Comprehensive Guide to Hive SQL Syntax and Operations

This article provides a detailed walkthrough of Hive SQL, categorizing its features and syntax for practical use. Hive SQL is segmented into the following categories: DDL Statements: Operations on...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.