آموزش jQuery

آموزش jQuery

jQuery یک لایبرری سبک است که به منظور تسهیل فرآیند کدنویسی با زبان جاوااسکریپت توسعه یافته است. در واقع،‌ جی‌کوئری قابلیت‌هایی که نیاز به ده‌ها خط کدنویسی با زبان جاوااسکریپت دارند را در قالب متدهایی پیاده‌سازی نموده که صرفاً با یک خط کد دقیقاً می‌توان به همان قابلیت دست یافت. در همین راستا، در آموزش ابتدا با پروسهٔ‌ نصب این لایبرری آشنا شده سپس خواهیم دید که به چه شکل می‌توان آن را می‌توان به منظور طراحی صفحات پویا مورد استفاده قرار داد.

راهنمای نصب jQuery

اساساً دو راه‌کار کلی به منظور نصب و استفاده از این لایبرری وجود دارد؛‌ اول این که لایبرری مذکور را دانلود نمود و به صورت لوکال آن را لود کرد و راه‌کار دیگر هم این که با استفاده از یک شبکهٔ توزیع محتوا (سی‌دی‌ان) این لایببری را لود نمود. 

چنانچه بخواهیم راه‌کار اول را دنبال نموده و به عبارتی با دانلود جی‌کوئری آن را به صورت لوکال لود کنیم، دو راه‌کار پیش روی ما است؛ اول این که نسخهٔ به اصطلاح Production جی‌کوئری را دانلود کنیم و دوم هم این که از نسخهٔ Development استفاده نماییم با این توضیح که نسخهٔ نسخه Production به منظور دیپلوی روی سرورهای اصلی سایت استفاده می‌شود چرا که فشرده‌سازی شده به طوری که حجم صفحه خیلی افزایش پیدا نمی‌کند اما نسخهٔ Development برای محیط توسعه مناسب است با این توضیح که کدها غیرفشرده و خوانا هستنند (به منظور دانلود این لایبرری، با مراجعه به لینک Download jQuery در سایت رسمی جی‌کوئری می‌توان هر کدام از نسخه‌‌های فوق که تمایل داشته باشید را دانلود نمایید.)

برای شروع کار با این لایبرری، پوشه‌ای با نامی دلخواه همچون jquery ساخته سپس داخل آن فایل دانلودی را قرار می‌دهیم و سپس فایلی تحت عنوان index.html ساخته و آن را به صورت زیر تکمیل می‌کنیم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>

</body>

</html>

همان‌طور که ملاحظه می‌شود، در بخش هِد این صفحه با استفاده از تگ <script></script> اقدام به بارگزاری فایل مذکور کرده‌ایم و از آنجا که HTML5 به صورت خودکار زبان جاوااسکریپت را می‌شناسد، دیگر همچون گذشته نیازی به درج اَتریبیوت "type="text/javascript نخواهیم داشت و از این لحظه به بعد فایل فوق آماده برای کدنویسی با لایبرری جی‌کوئری است. اگر هم بخواهیم با استفاده از یک شبکهٔ توزیع محتوا اقدام به بارگزاری جی‌کوئری کنیم، می‌توانیم فایل فوق را به صورت زیر ریفکتور نماییم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <!-- <script src="jquery-3.4.1.js"></script> -->
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
</head>

<body>

</body>

</html>

اساساً‌ می‌توان گفت که مزیت استفاده از سی‌دی‌ان برای لود کردن لایبرری‌هایی همچون جی‌کوئری در این است که شبکه‌های توزیع محتوا تمام تلاش خود را به کار می‌گیرند تا از نزدیک‌ترین سرور به محل جغرافیایی کاربر فایل درخواستی را لود کنند و همین مسئله منجر به پایین آمدن زمان لود صفحه خواهد شد (در همین راستا، توصیه می‌کنیم به مقالهٔ JsDelivr | Cdnjs | Google Libraries | Microsoft CDN: چهار CDN برای میزبانی پروژه‌های اپن‌سورس مراجعه نمایید.) پیش از شروع کدنویسی با لایبرری جی‌کوئری، برای آن که اطمینان حاصل کنیم هر کدی که نوشته‌ایم صرفاً پس از لود کامل صفحه اجرا خواهد شد، از دستور زیر استفاده می‌کنیم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <!-- <script src="jquery-3.4.1.js"></script> -->
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
</head>

<body>

</body>
<script>
    $(document).ready(function () {

    });
</script>

</html>

به طور مثال، اگر صفحه به طور کامل بارگزاری نشده باشد و بخواهیم مثلاً‌ یکی از تگ‌های اچ‌تی‌ام‌ال را پنهان کنیم، تَسک مذکور عملی نخواهد شد چرا که صفحه هنوز آماده کار با جی‌کوئری نشده است اما با درج کدی که داخل تگ‌های <script></script> نوشته‌ایم، این تضمین ایجاد می‌شود که مشکلی برنخواهیم خورد.

آشنایی با مفهوم Selector در jQuery

یکی از مهم‌ترین بخش‌های این لایبرری مفهومی است تحت عنوان Selector که این امکان را در اختیار توسعه‌دهندگان فرانت‌اند می‌گذارد تا تگ‌های اچ‌تی‌ام‌ال را هدف قرار داده، آن‌ها را انتخاب نموده و در نهایت کاری که مد نظر دارند را روی آن‌ها اِعمال نمایند. اساساً سِلِکتورها بر اساس تگ، شناسه، کلاس، اَتریبیوت و ... می‌توانند تگ‌های اچ‌تی‌ام‌ال را بیابند و تمامی سِلِکتورهای جی‌کوئری با علامت $ شروع می‌شوند. به طور مثال، برای انتخاب کلیهٔ تگ‌های <p></p> در یک صفحه می‌توان از دستور ('p')$ استفاده نمود:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
</body>
<script>
    $(document).ready(function () {
        $('p').css('color', '#ffde57');
    });
</script>

</html>

همان‌طور که ملاحظه می‌شود، داخل تگ‌های <body></body> دو جفت تگ <p></p> درج نموده‌ایم و با استفاده از سِلِکتور p آن‌ها را هدف قرار داده و با استفاده از اَکشنی تحت عنوان ()css که در ادامهٔ آموزش بیشتر با مفهومش آشنا خواهیم شد، رنگ آن‌ها را تغییر داده‌ایم به طوری که اگر این فایل را داخل مرورگر باز نماییم، می‌بینیم که رنگ نوشته‌ها به زرد تغییر پیدا کرده است. همچنین اگر بخواهیم یک اِلِمان را بر اساس شناسه (آی‌دی) بیابیم، می‌توانیم از علامت # سپس درج شناسهٔ مذکور استفاده نماییم. به طور مثال، برای یافتن تگی همچون <div id="wrapper"></div> می‌توان از سِلِکتور ("wrapper#")$ استفاده نمود:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <div id="wrapper">Some Text</div>
</body>
<script>
    $(document).ready(function () {
        $('#wrapper').css('color', '#ffde57');
    });
</script>

</html>

توجه داشته باشیم که صرفاً زمانی می‌توانیم از این سِلِکتور استفاده کنیم که فقط و فقط یک اِلِمان با شناسهٔ wrapper در صفحه موجود باشد. در عین حال، اگر چندین و چند اِلِمان مختلف در صفحه داشته باشیم که از یک کلاس به‌خصوص برخوردارند، مثلاً چندین تگ <div class="container"></div>، می‌توان از سِلِکتوری به صورت ("container.")$ استفاده نمود:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <div class="container">Container 1</div>
    <div class="container">Container 2</div>
    <div class="container">Container 3</div>
</body>
<script>
    $(document).ready(function () {
        $('.container').css('color', '#ffde57');
    });
</script>

</html>

لازم به یادآوری است که علائم "" و '' کاربردی یکسان در انتخاب سِلِکتورها دارند. همچنین یک سری سِلِکتور دیگر نیز در لایبرری جی‌کوئری داریم که در مثال‌های زیر برخی از آن‌ها را مورد بررسی قرار خواهیم داد:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <p class="intro">Paragraph 1</p>
    <p class="intro">Paragraph 2</p>
</body>
<script>
    $(document).ready(function () {
        $('p.intro').css('color', 'red');
    });
</script>

</html>

سِلِکتور p.intro کلیهٔ‌ تگ‌های <p></p> که دارای کلاس intro هستند را انتخاب می‌کند. اگر هم بخواهیم تا صرفاً اولین تگ <p></p> را انتخاب کنیم، از سِلِکتور زیر استفاده می‌کنیم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <p class="intro">Paragraph 1</p>
    <p class="intro">Paragraph 2</p>
</body>
<script>
    $(document).ready(function () {
        $('p:first').css('color', 'red');
    });
</script>

</html>

چنانچه صفحه را رِفرش کنیم،‌ می‌بینیم که فقط رنگ اولین تگ تغییر پیدا کرده است. به عنوان مثالی دیگر نیز داریم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
</body>
<script>
    $(document).ready(function () {
        $('[href]:first').css('color', 'red');
    });
</script>

</html>

سِلِکتور فوق فقط اولین اِلِمانی را هدف قرار می‌دهد که دارای اَتریبیوت href باشد. به عنوان مثالی دیگر در ارتباط با لینک‌ها داریم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <a href="#">Link 1</a>
    <a href="#" target="_blank">Link 2</a>
</body>
<script>
    $(document).ready(function () {
        $("a[target='_blank']").css('color', 'red');
    });
</script>

</html>

سِلِکتور فوق نیز هر تگ <a></a> که مقدار اَتریبیوت target آن برابر با blank_ باشد را انتخاب می‌کند. به عنوان نمونه‌ای از لیست‌ها نیز داریم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <ul>
        <li>Child 1</li>
        <li>Child 2</li>
        <li>Child 3</li>
    </ul>
</body>
<script>
    $(document).ready(function () {
        $('ul li:first-child').css('color', 'red');
    });
</script>

</html>

در واقع،‌ سِلِکتور فوق اولین تگ <li></li> لیست فوق را انتخاب می‌کند (جهت آشنایی با لیست کامل سِلِکتورها در جی‌کوئری، می‌توانید به لینک jQuery Selectors در سایت رسمی این لایبرری مراجعه نمایید.)

آشنایی با مفهوم Event در jQuery

هر عملی که کاربر روی یک صفحهٔ اچ‌تی‌ام‌ال انجام می‌دهد تحت عنوان Event شناخته می‌شود. به طور مثال، کلیک کردن روی یک دکمه، تکان دادن ماوس و کارهایی از این دست همگی ایونت (رویداد) هستند. برای درک بهتر سازوکار ایونت‌ها در جی‌‌کوئری، در ادامه کدی می‌نویسیم که اگر کاربر روی اِلِمانی با شناسهٔ wrapper کلیک کرد، رنگ آن عوض شود:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <div id="wrapper">Some Text</div>
</body>
<script>
    $(document).ready(function () {
        $('#wrapper').click(function(){
            $(this).css('color', 'blue');
        });
    });
</script>

</html>

همان‌طور که ملاحظه می‌شود، اِلِمانی با شناسهٔ wrapper ایجاد کرده‌ایم سپس داخل تگ‌های <script></script> دستور داده‌ایم تا اگر کاربر روی اِلِمانی با آی‌دی wrapper کلیک کرد، رنگش تغییر کند. آنچه در ارتباط با کد فوق نیاز به توضیح بیشتر دارد، سِلِکتور (this)$ است. در واقع، کارکرد این سِلِکتور را می‌توان به «این اِلِمانی که رویش کلیک شد» تفسیر نمود؛ به عبارت بهتر، در کد فوق دستور داده‌ایم تا این اِلِمانی که رویش کلیک شده را هدف قرار داده و رنگش را تغییر دهد. دو مورد از دیگر ایونت‌ها ()mouseenter و ()mouseleave است که برای درک بهتر کارکرد آن‌ها، قطعه کد زیر را مد نظر قرار می‌دهیم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <div id="wrapper">Some Text</div>
</body>
<script>
    $(document).ready(function () {
        $('#wrapper').mouseenter(function(){
            $(this).css('color', 'blue');
        });
        $('#wrapper').mouseleave(function(){
            $(this).css('color', 'red');
        });
    });
</script>

</html>

اگر این فایل را داخل مرورگر اجرا کنیم، می‌بینیم که با هاور کردن روی متن موجود در صفحه رنگ آن به آبی تغییر می‌کند و زمانی که نشانگر ماوس را کنار می‌کشیم، رنگ متن به قرمز تغییر پیدا خواهد کرد (جهت آشنایی با لیست کامل ایونت‌های جی‌کوئری، می‌توانید به لینک jQuery Events مراجعه نمایید.)

آشنایی با مفهوم Effect در jQuery

در لایبرری جی‌کوئری یک سری اِفکت (جلوه) داریم که می‌توان پس از انجام یک ایونت، آن‌ها را فراخوانی کرد. به طور مثال، در کد زیر قصد داریم تا دو دکمه ایجاد کنیم که یکی مسئول پنهان کردن متن و دیگری مسئول نمایش آن است:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="hide-text">Hide Text</button>
    <button id="show-text">Show Text</button>
    <div id="text">Lorem ipsum dolor sit amet consectetur adipisicing elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#hide-text').click(function () {
            $('#text').hide(3000);
        });
        $('#show-text').click(function () {
            $('#text').show();
        });
    });
</script>

</html>

همان‌طور که ملاحظه می‌شود، دو دکمه ساخته‌ایم که هر کدام آی‌دی منحصربه‌فردی دارا است و متنی را نیز داخل تگ‌های <div></div> درج کرده و برای این اِلِمان شناسه‌ای همچون text در نظر گرفته‌ایم. در ادامه، دستور داده‌ایم که اگر کاربر روی دکمه‌ای با شناسهٔ hide-text کلیک کرد، اِلِمانی با شناسهٔ text پنهان گردد و این در حالی است که برای اَکشن ()hide آرگومانی همچون ۳۰۰۰ میلی‌ثانیه در نظر گرفته‌ایم بدان معنا که پروسهٔ پنهان کردن این اِلِمان ۳ ثانیه به طول خواهد انجامید و در ادامه نیز گفته‌ایم که اگر کاربر روی اِلِمانی با آی‌دی show-text کلیک کرد، بلوکی که پنهان کرده بودیم آشکار گردد (علاوه بر درج آرگومان ورودی این دو فانکشن بر حسب میلی‌ثانیه، می‌توان از مقادیر slow و fast نیز استفاده کرد.)

علاوه بر متدهای ()hide و ()show، می‌توان از متدی تحت عنوان ()toggle نیز استفاده نمود به طوری که هر دو تَسک فوق را در قالب یک اَکشن انجام خواهد داد:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="toggle-text">Toggle Text</button>
    <div id="text">Lorem ipsum dolor sit amet consectetur adipisicing elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#toggle-text').click(function () {
            $('#text').toggle('slow');
        });
    });
</script>

</html>

می‌بینیم که قابلیت قبلی صرفاً با ایجاد یک دکمه عملی شده است (برای مشاهدهٔ لیست کامل اِفکت‌های جی‌کوئری، می‌توانید به لینک jQuery Effects مراجعه نمایید.)

آشنایی با مفهوم Callback Function در jQuery

نیاز به توضیح نیست که کدهای نوشته‌شده با زبان جاوااسکریپت خط به خط اجرا می‌شوند و در ارتباط با اِفکت‌های جی‌کوئری گاهی نیاز خواهیم داشت تا پس از تکمیل یک اِفکت، کدهای دیگری اجرا گردند و اینجا است که می‌باید با مفهوم Callback آشنا باشیم. به منظور درک بهتر این موضوع، کدهای زیر را مد نظر قرار می‌دهیم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="text">Lorem ipsum dolor sit amet consectetur adipisicing elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#text').hide('slow', function(){
                alert('The text is hidden.');
            });
        });
    });
</script>

</html>

همان‌طور که ملاحظه می‌شود، به عنوان آرگومان دوم متد ()hide از یک فانکشن بی‌نام استفاده کرده‌ایم به طوری که پس از تکمیل پروسهٔ پنهان شدن متنی که روی صفحه نوشته‌ایم، یک پاپ‌آپ در معرض دید کاربر قرار خواهد گرفت. برای آن که دقیق‌تر با مفهوم کال‌بک آشنا شویم، کدهای فوق را به صورت زیر ریکفتور می‌کنیم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="text">Lorem ipsum dolor sit amet consectetur adipisicing elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#text').hide('slow');
            alert('The text is hidden.');
        });
    });
</script>

</html>

همان‌طور که می‌بینیم، به محض کلیک روی دکمهٔ‌ مذکور قبل از این که متن پنهان شود، پاپ‌آپ اجرا خواهد شد و این در حالی است که در صورت استفاده از کال‌بک، این تضمین ایجاد می‌گردد که متد ()hide به طور کامل اجرا شده سپس کدهای بعدی اجرا گردند.

آشنایی با مفهوم Method Chaining در jQuery

در لایبرری جی‌کوئری این امکان برای توسعه‌دهندگان فرانت‌اند فراهم شده تا یک سری متد مختلف را یکی پس از دیگری به صورت زنجیروار اجرا کنند که به این کار Method Chaining گفته می‌شود. به طور مثال، در کدهای زیر ابتدا رنگ متن تغییر کرده سپس متن مذکور طی ۲ ثانیه بسته و مجدد طی ۲ ثانیه باز می‌شود:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="text">Lorem ipsum dolor sit amet consectetur adipisicing elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#text').css('color', 'red').slideUp(2000).slideDown(2000);
        });
    });
</script>

</html>

در صورتی که روی دکمهٔ قرارگرفته داخل صفحه کلیک کنیم، خواهیم دید که متدهای جی‌کوئری یکی پس از دیگری به ترتیب اجرا خواهند شد.

آشنایی با مفهوم DOM Manipulation در jQuery

یکی از قابلیت‌های منحصربه‌فرد جی‌کوئری برخورداری از یک سری متدهایی است که برای کار با Document Object Model یا به اختصار DOM تعبیه شده‌اند. به طور خلاصه، می‌توان گفت که منظور از DOM استانداردی به منظور دستیابی و به‌روزرسانی ساختار، محتوا، شکل و شمایل اِلِمان‌های اچ‌تی‌ام‌ال است. در لایبرری جی‌کوئری متدهای ()text و ()html به همراه ()val به منظور کار با DOM تعبیه شده‌اند. برای درک بهتر این موضوع، در کدهای زیر ابتدا ()text را مورد بررسی قرار می‌دهیم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="text">Lorem ipsum dolor sit amet consectetur adipisicing elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            alert($('#text').text());
        });
    });
</script>

</html>

متد ()text متن موجود در اِلِمانی با شناسهٔ‌ text را ریترن می‌کند و می‌بینیم که با کلیک بر روی دکمهٔ مذکور،‌ این متد در یک پاپ‌آپ در معرض دیدمان قرار می‌گیرد. همچنین اگر بخواهیم این متن را آپدیت کنیم، می‌توانیم از کدهای زیر استفاده نماییم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="text">Lorem ipsum dolor sit amet consectetur adipisicing elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#text').text('The updated text.');
        });
    });
</script>

</html>

از طریق کدهای فوق دستور داده‌ایم تا در صورت کلیک روی دکمهٔ موجود داخل صفحه، اِلِمانی با شناسهٔ text هدف قرار داده شده و متن جدیدی برایش در نظر گرفته شود. همچنین کاربرد متد ()html نیز به صورت زیر است:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="text">Lorem ipsum dolor sit amet <strong>consectetur adipisicing</strong> elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            alert($('#text').html());
        });
    });
</script>

</html>

داخل متن موجود از تگ‌های <strong></strong> استفاده نموده‌ایم و با کلیک روی دکمه خواهیم دید که ساختار اچ‌تی‌ام‌ال اِلِمانی با شناسهٔ text در معرض دیدمان قرار می‌گیرد و اگر هم بخواهیم تا ساختار اچ‌تی‌ام‌ال این اِلِمان را آپدیت کنیم، می‌توانیم از نمونه کد زیر استفاده نماییم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="text">Lorem ipsum dolor sit amet consectetur adipisicing elit.
        Totam, quae alias distinctio laudantium molestias,
        ut culpa odio quas aliquam libero eveniet illum incidunt repellendus nemo deleniti,
        labore consequuntur facere? Iusto?
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#text').html('<ul><li>Item 1</li><li>Item 2</li></ul>');
        });
    });
</script>

</html>

در تفسیر کدهای فوق باید گفت که متد ()html این وظیفه را دارا است تا ساختار اِلِمانی که هدف قرار داده شده را آپدیت کند. به طور مثال،‌ دستور داده‌ایم تا در صورت کلیک روی دکمهٔ مذکور، اِلِمانی با شناسهٔ text را یافته و کدهای مرتبط با یک لیست به جای آن قرار گیرد. متد ()val نیز برای فیلدهای یک فرم کاربرد دارد به طوری که برای مثال داریم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <form>
        <input type="text" id="username">
    </form>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            alert($('#username').val());
        });
    });
</script>

</html>

یک فرم بسیار ساده ساخته‌ایم که حاوی فیلدی با شناسهٔ username است و از طریق جی‌کوئری نیز دستور داده‌ایم تا در صورت کلیک روی دکمه، مقداری که داخل این فیلد وارد شده در قالب یک پنجرهٔ پاپ‌آپ در معرض دید کاربر قرار گیرد. اگر هم بخواهیم تا مقدار فیلد فوق‌الذکر را به‌روزرسانی کنیم، می‌توانیم از نمونه کد زیر استفاده نماییم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <form>
        <input type="text" id="username">
    </form>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#username').val('some value');
        });
    });
</script>

</html>

همان‌طور که ملاحظه می‌شود، به عنوان آرگومان متد ()val از یک استرینگ دلخواه استفاده نموده‌ایم به طوری که با کلیک بر روی دکمه موجود، آن استرینگ به جای مقدار ورودی فیلد مذکور در نظر گرفته خواهد شد.

یکی دیگر از متدهای مرتبط با این حوزه ()attr نام دارد که این وظیفه را دارا است تا مقدار در نظر گرفته شده برای یک اَتریبیوت خاص را ریترن کند به طوری که برای نمونه داریم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <a href="https://example.com">Link</a>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            alert($('a').attr('href'));
        });
    });
</script>

</html>

همان‌طور که ملاحظه می‌شود، لینکی ساخته‌ایم که از طریق جی‌کوئری دستور داده‌ایم تا در صورت کلیک روی دکمه، این لینک هدف قرار داده شده و مقدار اَتریبیوت href آن بازگردانده شود. همچنین متد ()attr به منظور سِت کردن مقداری جدید نیز به صورت زیر می‌تواند مورد استفاده قرار گیرد:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <a href="https://example.com">Link</a>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('a').attr('href', 'https://sokanacademy.com');
        });
    });
</script>

</html>

در واقع، به محض کلیک کردن روی دکمهٔ موجود، مقدار در نظر گرفته شده برای اَتریبیوت href از https://example.com به https://sokanacademy.com تغییر پیدا می‌کند. همچنین توجه داشته باشیم که در آنِ واحد نیز می‌توان بیش از دو اَتریبیوت را با استفاده از متد ()attr به صورت زیر مقداردهی کرد:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <a href="https://example.com">Link</a>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('a').attr({
                'href': 'https://sokanacademy.com',
                'title': 'Ths is a title'
            });
        });
    });
</script>

</html>

همان‌طور که ملاحظه می‌شود، از یک جفت علائم {} داخل متد ()attr استفاده کرده، سپس یک سری به اصطلاح Key/Value برای آن در نظر گرفته‌ایم (جهت مشاهدهٔ لیست متدهای کار با DOM، می‌توانید به لینک jQuery Attributes مراجعه نمایید.)

لازم به ذکر است که با استفاده از لایبرری جی‌کوئری به سادگی می‌توان محتوای جدیدی به اِلِمان‌های موجود در صفحه افزود به طوری که مثلاً داریم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <p id="paragraph-1">This is paragraph 1.</p>
    <p id="paragraph-2">This is paragraph 1.</p>
    <p id="paragraph-3">This is paragraph 1.</p>
    <p id="paragraph-4">This is paragraph 1.</p>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#paragraph-1').append(' some text appended.');
            $('#paragraph-2').prepend('some text prepended. ');
            $('#paragraph-3').after(' some text added after.');
            $('#paragraph-4').before(' some text added before.');
        });
    });
</script>

</html>

در حقیقت سازوکار متد ()append بدین صورت است که آرگومان ورودی را به انتهای اِلِمان انتخابی می‌افزاید؛ متد ()prepend آرگومان ورودی‌اش را به ابتدای اِلِمان انتخابی اضافه می‌کند؛ متد ()after نیز محتوای موجود به عنوان آرگومان ورودی‌اش را پس از اِلِمان انتخابی اضافه می‌کند و در نهایت به متد ()before می‌رسیم که آرگومان ورودی را قبل از اِلِمان انتخابی می‌افزاید. در عین حال توجه داشته باشیم که با استفاده از این متدها می‌توان کدهای اچ‌تی‌ام‌ال را نیز به اِلِمان انتخابی منتسب کرد. به طور مثال، در ادامه خواهیم دید که به چه شکل می‌توان با استفاده از متد ()after یک لیست پس از تگ <p></p> افزود:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <p id="paragraph-1">This is paragraph 1.</p>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            var list = '<ul>'+
                            '<li>Item 1</li>'+
                            '<li>Item 2</li>'+
                            '<li>Item 3</li>'+
                        '</ul>';
            $('#paragraph-1').after(list);
        });
    });
</script>

</html>

پس از آشنایی با نحوهٔ افزودن یک سری اِلِمان جدید به اِلِمان‌های موجود در صفحه، حال نوبت به بررسی نحوهٔ حذف اِلِمان‌ها می‌رسد به طوری که خواهیم داشت:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="wrapper">
        <p id="paragraph-1">This is paragraph 1.</p>
        <p id="paragraph-2">This is paragraph 2.</p>
        <p id="paragraph-3">This is paragraph 3.</p>
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#wrapper').remove();
        });
    });
</script>

</html>

در جی‌کوئری متدی داریم تحت عنوان ()remove که اِلِمان انتخابی + کلیهٔ دیگر اِلِمان‌های موجود داخل آن را حذف می‌کند به طوری که در مثال فوق با کلیک بر روی دکمه، اِلِمانی با شناسهٔ wrapper به علاوهٔ هر سه پاراگراف موجود در آن حذف می‌شوند. در مقابل، متد دیگری داریم به نام ()empty و همان‌طور که از نام این متد مشخص است، این وظیفه را دارا است تا فقط محتوای اِلِمان انتخابی را حذف کند:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
</head>

<body>
    <button id="btn">Button</button>
    <div id="wrapper">
        <p id="paragraph-1">This is paragraph 1.</p>
        <p id="paragraph-2">This is paragraph 2.</p>
        <p id="paragraph-3">This is paragraph 3.</p>
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#paragraph-2').empty();
        });
    });
</script>

</html>

پس از کلیک بر روی دکمهٔ فوق،‌ می‌بینیم که محتوای پاراگرافی با شناسهٔ paragraph-2 حذف می‌شود و این در حالی است که اِلِمان فوق را با استفاده از ابزار اینسپِکتور مرورگر چک کنیم، می‌بینیم که <p id="paragraph-2"></p> سر جایش باقی است و صرفاً محتوای آن حذف شده است.

آشنایی با مفهوم CSS Manipulation در jQuery

یکی دیگر از ویژگی‌های کاربردی جی‌کوئری آن است که می‌توان با استفاده از این لایبرری اقدام به تغییر استایل اِلِمان‌های موجود در صفحه کرد که برای درک بهتر این موضوع، مثال زیر را مد نظر قرار می‌دهیم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
    <style>
        .important {
            font-weight: bold;
            font-size: xx-large;
        }
    </style>
</head>

<body>
    <button id="btn">Button</button>
    <div id="wrapper">
        <p id="paragraph-1">This is paragraph 1.</p>
        <p id="paragraph-2">This is paragraph 2.</p>
        <p class="important" id="paragraph-3">This is paragraph 3.</p>
        <p id="paragraph-4">This is paragraph 4.</p>
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#paragraph-1').css('color', 'green');
            $('#paragraph-2').addClass('important');
            $('#paragraph-3').removeClass('important');
            $('#paragraph-4').toggleClass('important');
        });
    });
</script>

</html>

در صورت اجرای این فایل داخل مرورگر و کلیک بر روی دکمهٔ موجود در صفحه، به خوبی عملکرد هر یک از متدهای فوق مشخص خواهد شد به طوری که متد ()css دو پارامتر ورودی می‌گیرد که پارامتر اول مربوط به پراپرتی و پارامتر دوم مرتبط با مقدار آن پراپرتی است. متد ()addClass نیز این وظیفه را دارا است تا کلاس سی‌اس‌اسی که از قبل تعریف شده را به اِلِمان مد نظر اضافه کند و متد ()removeClass دقیقاً عکس مورد فوق است و در نهایت به ()toggleClass می‌رسیم که با فراخوانی آن، یک کلاس به اِلِمان مذکور اضافه شده و با فراخوانی مجدد کلاس مذکور حذف خواهد شد. همچنین در نظر داشته باشیم که با استفاده از متد ()css می‌توان در آنِ واحد بیش از یک پراپرتی را مقداردهی کرد به طوری که مثلاً داریم:

<!DOCTYPE html>
<html>

<head>
    <title>SokanAcademy jQuery Tutorial</title>
    <script src="jquery-3.4.1.js"></script>
    <style>
        .important {
            font-weight: bold;
            font-size: xx-large;
        }
    </style>
</head>

<body>
    <button id="btn">Button</button>
    <div id="wrapper">
        <p id="paragraph-1">This is paragraph 1.</p>
        <p id="paragraph-2">This is paragraph 2.</p>
        <p class="important" id="paragraph-3">This is paragraph 3.</p>
        <p id="paragraph-4">This is paragraph 4.</p>
    </div>
</body>
<script>
    $(document).ready(function () {
        $('#btn').click(function () {
            $('#paragraph-1').css({
                'color': 'green',
                'font-size': '100px'
            });
            $('#paragraph-2').addClass('important');
            $('#paragraph-3').removeClass('important');
            $('#paragraph-4').toggleClass('important');
        });
    });
</script>

</html>

همان‌طور که ملاحظه می‌شود، با قرار دادن علائم {} داخل متد ()css توانسته‌ایم پراپرتی‌های color و font-size را مقداردهی کنیم.

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

جمع‌بندی
اگرچه که jQuery به نسبت رقبایی همچون React یا Vue کمی قدیمی به نظر می‌رسد، اما بسیاری از پروژه‌ها هستند که کماکان با این لایبرری توسعه داده شده‌اند و توسعه داده‌ می‌شوند و از آنجا که یادگیری اصول کار با جی‌کوئری بسیار ساده است، می‌توان با صرف اندک زمانی اقدام به یادگیری آن نماییم.