📦jQuery

jQuery förenklar JavaScript-programmering med kraftfulla verktyg för DOM-manipulation, AJAX-anrop och animationer. Perfekt för snabb webbutveckling.

Kodexempel

🎯

DOM Manipulation

Effektiv DOM-manipulation med jQuery för dynamiska webbsidor.

// Grundläggande jQuery syntax
$(document).ready(function() {
    // Selektorer och manipulation
    $("#myButton").click(function() {
        $(".content").fadeToggle();
        $(this).text($(this).text() === "Visa" ? "Dölj" : "Visa");
    });
    
    // Kedjade metoder
    $(".box")
        .addClass("active")
        .css("background-color", "#3498db")
        .animate({ width: "300px" }, 500)
        .delay(200)
        .fadeIn();
    
    // Traversering
    $("li").each(function(index) {
        $(this).attr("data-index", index);
    });
});

jQuery förenklar DOM-manipulation med kortare syntax och kraftfulla metoder

🔄

AJAX-anrop

Asynkrona HTTP-requests med jQuery för dynamisk data.

// GET-request med jQuery
$.ajax({
    url: "/api/users",
    method: "GET",
    dataType: "json",
    success: function(data) {
        // Hantera framgångsrik respons
        $.each(data, function(index, user) {
            $("#userList").append(
                $("<li>").text(user.name)
            );
        });
    },
    error: function(xhr, status, error) {
        console.error("Error:", error);
        $("#error").text("Kunde inte hämta användare");
    }
});

// POST-request med promises
$.post("/api/users", {
    name: $("#name").val(),
    email: $("#email").val()
})
.done(function(response) {
    alert("Användare skapad!");
})
.fail(function(xhr) {
    alert("Fel: " + xhr.responseText);
});

// Förenklad GET med getJSON
$.getJSON("/api/products", function(products) {
    // Process products
});

jQuery AJAX förenklar asynkrona requests med bra felhantering

Event Handling

Avancerad eventhantering och delegering med jQuery.

// Event delegation för dynamiskt innehåll
$(document).on("click", ".dynamic-button", function() {
    console.log("Klick på dynamisk knapp!");
});

// Multiple events
$("#myInput")
    .on({
        focus: function() {
            $(this).addClass("active");
        },
        blur: function() {
            $(this).removeClass("active");
        },
        keyup: function(e) {
            if (e.key === "Enter") {
                submitForm();
            }
        }
    });

// Custom events
$(document).on("userLoggedIn", function(e, userData) {
    $(".username").text(userData.name);
    $(".login-section").hide();
    $(".user-section").show();
});

// Trigger custom event
$(document).trigger("userLoggedIn", { name: "Anna" });

// Prevent default och stop propagation
$("form").submit(function(e) {
    e.preventDefault();
    // Custom form handling
});

jQuery's eventsystem är kraftfullt med stöd för delegation och custom events

Animationer & Effekter

Skapa smidiga animationer och visuella effekter.

// Grundläggande animationer
$("#box").animate({
    left: "200px",
    opacity: 0.5,
    height: "toggle"
}, 1000, "easeInOut");

// Kedjade animationer
$(".notification")
    .slideDown(300)
    .delay(3000)
    .fadeOut(500, function() {
        $(this).remove();
    });

// Custom animation queue
function pulseEffect() {
    $(".pulse")
        .animate({ opacity: 0.3 }, 500)
        .animate({ opacity: 1 }, 500, pulseEffect);
}

// Stoppa animationer
$("#stop").click(function() {
    $(".animated").stop(true, true);
});

// Toggle effects
$(".accordion-header").click(function() {
    $(this).next(".accordion-content").slideToggle();
    $(this).find(".arrow").toggleClass("rotated");
});

jQuery animationer ger smidig kontroll över visuella effekter

Best Practices

Performance

  • Cacha jQuery-selektorer i variabler
  • Använd ID-selektorer när möjligt (#id)
  • Minimera DOM-manipulation i loopar
  • Använd event delegation för dynamiskt innehåll

Best Practices

  • Använd alltid $(document).ready()
  • Kedja metoder för effektivitet
  • Använd data-attribut för metadata
  • Separera JavaScript från HTML
🔄

Modern Användning

  • Överväg vanilla JS för enkla uppgifter
  • Använd jQuery för legacy-projekt
  • Kombinera med moderna frameworks försiktigt
  • Håll jQuery uppdaterat för säkerhet
🐛

Debugging

  • Använd console.log() för att debugga
  • Kontrollera att element finns före manipulation
  • Använd browser DevTools för att inspektera
  • Testa i olika webbläsare

🔌 Populära jQuery Plugins

UI & Interactions

  • • jQuery UI - Widgets och interactions
  • • Select2 - Avancerade select-boxar
  • • DataTables - Tabeller med funktioner

Validering & Forms

  • • jQuery Validation - Formulärvalidering
  • • jQuery Mask - Input masking
  • • jQuery Form - AJAX forms

Media & Effekter

  • • Slick - Carousel/slider
  • • Fancybox - Lightbox för bilder
  • • Isotope - Filtrerbar layout

💡 Vanliga jQuery-mönster

DOM Ready

// Kort syntax
$(function() {
    // Kör när DOM är redo
});

// Lång syntax
$(document).ready(function() {
    // Kör när DOM är redo
});

Plugin Pattern

$.fn.myPlugin = function(options) {
    var settings = $.extend({
        color: "blue",
        speed: 500
    }, options);
    
    return this.each(function() {
        // Plugin logic
    });
};