یک نکتهی تکمیلی: انتساب اطلاعات به المانها
استاندارد W3C HTML5، برای تعریف ویژگیهای سفارشی، استفادهی از ویژگیهای -data را توصیه میکند.
برای مثال جدول فوق را درنظر بگیرید. در برنامههای کاربردی گاهی از اوقات نیاز است تا بتوان ردیفی را از بانک اطلاعاتی حذف کرد. در این حالت میتوان به هر tr یک ویژگی data-original-idx را نیز نسبت داد تا مشخص باشد id واقعی آن کدام است و سپس بر اساس آن عدد، کار حذف را انجام داد و یا روش استانداردی برای تعریف آدرس تصویری در حالت بزرگنمایی آن وجود ندارد. برای اینکار میتوان این اطلاعات سفارشی را برای مثال توسط ویژگی فرضی data-zoom-url به آن انتساب داد:
خواندن و به روز رسانی ویژگیهای -data توسط jQuery
در این مثال میخواهیم مقدار ویژگی سفارشی data-scene-offsets را توسط jQuery بخوانیم:
در اینجا از متد data و نام پس از -data به صورت camel-case استفاده میشود.
روش به روز رسانی آن نیز به صورت زیر است:
البته باید دقت داشت زمانیکه از این روش استفاده میشود، مقدار ویژگی data-scene-offsets در document تغییری نمیکند. بلکه جیکوئری آنرا در یک JavaScript data store ذخیره خواهد کرد. در این حالت تعریف المان در صفحه با اطلاعات جدید آن هماهنگ نیست و همچنین این تغییرات را صرفا از طریق jQuery میتوان خواند.
خواندن و به روز رسانی ویژگیهای -data توسط جاوا اسکریپت خالص
در مطلب جاری، روش خواندن اطلاعات از ویژگیها را بررسی کردیم. در اینجا نیز میتوان همانند قبل عمل کرد:
و برای تغییر آن از متد استاندارد setAttribute کمک میگیریم:
مزیت این روش نسبت به متد data جیکوئری این است که در این حالت تعریف المان در صفحه همواره با دادههای تغییر یافتهی آن هماهنگ خواهد بود و همچنین دادههای تغییر یافتهی در اینجا توسط هر نوع کد جاوا اسکریپتی قابل دسترسی است.
کار با دادههای انتساب داده شدهی به المانها از طریق ویژگیهای جدید ECMAScript 2015
در استاندارد ECMAScript 2015، به اینترفیس HTMLElement، خاصیت جدید dataset نیز اضافه شدهاست؛ از نوع DOMStringMap، که آن نیز جزئی از استاندارد HTML 5 است. هر خاصیتی که به dataset اضافه شود، به صورت یک ویژگی -data در آن المان ظاهر خواهد شد.
در این حالت برای خواندن ویژگی data-scene-offsets میتوان به صورت زیر عمل کرد:
که در اینجا نیز همانند متد data جیکوئری باید نام ویژگی را camel-case ذکر کرد.
و اینبار روش به روز رسانی اطلاعات این ویژگی سفارشی به صورت زیر است:
همچنین چون dataset یک خاصیت جاوا اسکریپتی است، حذف اطلاعات از آن، مانند حذف هر خاصیت دیگر جاوا اسکریپتی است:
استاندارد W3C HTML5، برای تعریف ویژگیهای سفارشی، استفادهی از ویژگیهای -data را توصیه میکند.
<table> <thead> <tr> <th>Address</th> <th>Price</th> </tr> </thead> <tbody> <tr> <td>Address 1</td> <td>10,000,000</td> </tr> <tr> <td>Address 2</td> <td>100,000</td> </tr> </tbody> </table>
<img src="default.png" data-zoom-url="default-zoomed.png" alt="default image">
خواندن و به روز رسانی ویژگیهای -data توسط jQuery
<video src="my-video.mp4" data-scene-offsets="9,22,38">
var offsets = $('VIDEO').data('sceneOffsets');
روش به روز رسانی آن نیز به صورت زیر است:
$('VIDEO').data('sceneOffsets', '1,2,3');
خواندن و به روز رسانی ویژگیهای -data توسط جاوا اسکریپت خالص
در مطلب جاری، روش خواندن اطلاعات از ویژگیها را بررسی کردیم. در اینجا نیز میتوان همانند قبل عمل کرد:
var offsets = document.getElementsByTagName('VIDEO')[0].getAttribute('data-scene-offsets');
document.getElementsByTagName('VIDEO')[0].setAttribute('data-scene-offsets', '1,2,3');
کار با دادههای انتساب داده شدهی به المانها از طریق ویژگیهای جدید ECMAScript 2015
در استاندارد ECMAScript 2015، به اینترفیس HTMLElement، خاصیت جدید dataset نیز اضافه شدهاست؛ از نوع DOMStringMap، که آن نیز جزئی از استاندارد HTML 5 است. هر خاصیتی که به dataset اضافه شود، به صورت یک ویژگی -data در آن المان ظاهر خواهد شد.
در این حالت برای خواندن ویژگی data-scene-offsets میتوان به صورت زیر عمل کرد:
var offsets = document.querySelector('VIDEO').dataset.sceneOffsets;
و اینبار روش به روز رسانی اطلاعات این ویژگی سفارشی به صورت زیر است:
document.querySelector('VIDEO').dataset.sceneOffsets = '1,2,3';
delete document.querySelector('VIDEO').dataset.sceneOffsets;