قرأت عن Drupal اليوم ، وحاولت كتابة الكود التالي.
(function ($) {
Drupal.behaviors.mymodule = {
attach: function (context, settings) {
$('#mymodule_id', context).change(function () {
alert('Handler for .change() called.');
});
}
};
}(jQuery));
Drupal.behaviors.mymodule
مساحة الاسم؟document.ready()
؟باختصار ، ميزة السلوكيات على document.ready()
هي أنه يتم إعادة تطبيقها تلقائيًا على أي محتوى تم تحميله من خلال AJAX. mymodule
هي مساحة الاسم الخاصة بك ، والتي يجب أن تكون فريدة. context
هو جزء من الصفحة ينطبق عليه ذلك ، على سبيل المثال جزء من نموذج تم تحديثه باستخدام AJAX. يمكنك إرفاق العديد من السلوكيات ، ولكن أعتقد أنك بحاجة إلى استخدام اسم فريد (mymodule) لكل منها.
ألق نظرة على الموارد التالية لمزيد من المعلومات:
بكلمات سهلة ، Drupal.behaviors
طريقة أفضل لتطبيق jQuery.ready
على عكس jQuery.ready
التي يتم تشغيلها مرة واحدة فقط عندما يكون DOM جاهزًا ، Drupal.behaviors
يمكن تشغيله عدة مرات أثناء تنفيذ الصفحة.
على سبيل المثال ، في طرق العرض اللانهائية ، سيتم تحميل المزيد من العناصر عندما ينقر المستخدم على زر تحميل المزيد ، وبالتالي ، سيتغير DOM بعد التحميل الأولي.
ماذا لو أردنا إضافة فئات إلى العناصر المضافة حديثًا؟ هنا Drupal السلوكيات مفيدة.
سيتم تنفيذ السلوكيات في كل طلب بما في ذلك AJAX.
سيطلق دروبال على السلوكيات المرفقة عند تحميل DOM وأيضًا عندما يتم تغييره بواسطة Ajax ، ويمرر حجتين
السياق و الإعدادات
في المرة الأولى التي يتم فيها استدعاء Drupal.attachBehaviors () ، يحتوي المتغير السياق على كائن المستند الذي يمثل DOM ، ولكن بالنسبة لبقية سياق المكالمات سيحتوي على الجزء المتأثر من HTML.
الإعدادات يحتوي على معلومات تم تمريرها إلى JavaScript عبر PHP ، فهي مشابهة للوصول إليها عبر Drupal.settings.
علاوة على ذلك ، يمكن للوحدات النمطية استدعاء Drupal.attachBehaviors () أيضًا.