jQuery والتعامل مع DOM

الحصول على المحتوى وتعيينه

15 دقيقة الدرس 10 من 30

الحصول على المحتوى وتعيينه

توفر jQuery دوال قوية لقراءة وتعديل محتوى عناصر HTML. فهم هذه الدوال أمر أساسي لتطبيقات الويب الديناميكية.

دالة .text()

تحصل دالة .text() على محتوى النص في العناصر أو تعيّنه، مع استبعاد وسوم HTML.

HTML:
<p id="intro">مرحباً بك في <strong>jQuery</strong></p>
<button id="btn-get">الحصول على النص</button>
<button id="btn-set">تعيين النص</button>
JavaScript:
// الحصول على محتوى النص
$("#btn-get").click(function() {
    var text = $("#intro").text();
    console.log(text); // "مرحباً بك في jQuery"
});

// تعيين محتوى النص
$("#btn-set").click(function() {
    $("#intro").text("محتوى نصي جديد");
});
نصيحة: تقوم دالة .text() تلقائياً بتحويل وسوم HTML إلى نص عادي، مما يجعلها آمنة لعرض محتوى المستخدمين ويمنع هجمات XSS.

دالة .html()

تحصل دالة .html() على محتوى HTML في العناصر أو تعيّنه، بما في ذلك الوسوم.

HTML:
<div id="container">
    <p>المحتوى الأصلي</p>
</div>
JavaScript:
// الحصول على محتوى HTML
var html = $("#container").html();
console.log(html); // "<p>المحتوى الأصلي</p>"

// تعيين محتوى HTML
$("#container").html("<h3>عنوان جديد</h3><p>فقرة جديدة</p>");

// إضافة HTML
var current = $("#container").html();
$("#container").html(current + "<p>محتوى إضافي</p>");
تحذير: كن حذراً عند استخدام .html() مع إدخال المستخدم، حيث يمكن أن تنفذ سكريبتات. قم دائماً بتنظيف بيانات المستخدم أو استخدم .text() بدلاً من ذلك.

دالة .val()

تحصل دالة .val() على قيمة عناصر النماذج أو تعيّنها مثل حقول الإدخال ومناطق النص والقوائم المنسدلة.

HTML:
<input type="text" id="username" value="أحمد">
<textarea id="message">مرحباً بالعالم</textarea>
<select id="country">
    <option value="us">الولايات المتحدة</option>
    <option value="uk" selected>المملكة المتحدة</option>
</select>
JavaScript:
// الحصول على القيم
var username = $("#username").val();        // "أحمد"
var message = $("#message").val();          // "مرحباً بالعالم"
var country = $("#country").val();          // "uk"

// تعيين القيم
$("#username").val("فاطمة");
$("#message").val("رسالة جديدة");
$("#country").val("us");

// مسح حقل الإدخال
$("#username").val("");

التعامل مع عناصر متعددة

عند استدعاء الدوال على عناصر متعددة، تُرجع دوال الحصول قيمة العنصر الأول فقط، بينما تُطبق دوال التعيين على جميع العناصر المطابقة.

HTML:
<p class="item">الفقرة الأولى</p>
<p class="item">الفقرة الثانية</p>
<p class="item">الفقرة الثالثة</p>
JavaScript:
// دالة الحصول تُرجع العنصر الأول فقط
var text = $(".item").text();
console.log(text); // "الفقرة الأولى"

// دالة التعيين تُطبق على جميع العناصر
$(".item").text("تم تحديث جميع الفقرات");

// الآن جميع الفقرات الثلاث لديها نفس النص

استخدام دوال الاستدعاء (Callback)

يمكن لدوال المحتوى قبول دوال استدعاء لتعيين قيم مختلفة لكل عنصر بناءً على الفهرس والقيمة الحالية.

HTML:
<div class="box">صندوق</div>
<div class="box">صندوق</div>
<div class="box">صندوق</div>
JavaScript:
// تعيين نص مختلف لكل عنصر
$(".box").text(function(index, currentText) {
    return currentText + " " + (index + 1);
});
// النتيجة: "صندوق 1"، "صندوق 2"، "صندوق 3"

// التحديث بناءً على المحتوى الحالي
$(".box").html(function(index, currentHtml) {
    return "<strong>" + currentHtml + "</strong>";
});

مثال عملي: محدث المحتوى الديناميكي

HTML:
<div id="user-profile">
    <h2 id="profile-name">جاري التحميل...</h2>
    <p id="profile-bio"></p>
    <input type="text" id="name-input" placeholder="أدخل الاسم">
    <textarea id="bio-input" placeholder="أدخل النبذة"></textarea>
    <button id="update-btn">تحديث الملف الشخصي</button>
</div>
<div id="preview"></div>
JavaScript:
$(document).ready(function() {
    // تحميل البيانات الأولية
    $("#profile-name").text("أحمد محمد");
    $("#profile-bio").text("مطور ويب");

    // معاينة فورية
    $("#name-input, #bio-input").on("input", function() {
        var name = $("#name-input").val() || "اسمك";
        var bio = $("#bio-input").val() || "نبذة عنك";

        var preview = "<h3>" + name + "</h3><p>" + bio + "</p>";
        $("#preview").html(preview);
    });

    // تحديث الملف الشخصي
    $("#update-btn").click(function() {
        var newName = $("#name-input").val();
        var newBio = $("#bio-input").val();

        if (newName.trim() !== "") {
            $("#profile-name").text(newName);
        }

        if (newBio.trim() !== "") {
            $("#profile-bio").text(newBio);
        }

        // مسح حقول الإدخال
        $("#name-input, #bio-input").val("");
        $("#preview").html("<p style='color: green;'>تم تحديث الملف الشخصي!</p>");

        setTimeout(function() {
            $("#preview").html("");
        }, 2000);
    });
});
تمرين:
  1. أنشئ محرر تدوينة بسيط مع حقل إدخال للعنوان ومنطقة نص للمحتوى
  2. اعرض معاينة مباشرة للتدوينة أسفل المحرر
  3. أضف زر "نشر" ينقل المحتوى إلى قسم "المنشور"
  4. استخدم .text() للعنوان و .html() للمحتوى (مع التحويل المناسب)
  5. أضف عداد أحرف للعنوان (بحد أقصى 100 حرف)

الملخص

  • .text() - الحصول/تعيين محتوى النص (آمنة، تحوّل HTML)
  • .html() - الحصول/تعيين محتوى HTML (قوية، تتطلب حذراً)
  • .val() - الحصول/تعيين قيم عناصر النماذج
  • دوال الحصول تُرجع العنصر الأول، دوال التعيين تُطبق على الجميع
  • دوال الاستدعاء تُمكّن من التحديثات المبنية على الفهرس والشروط
  • تحقق دائماً من صحة مدخلات المستخدم ونظّفها للأمان

ES
Edrees Salih
منذ 18 ساعة

We are still cooking the magic in the way!