دمج الأساليب العامة ودوال الاستدعاء
أضف أساليب عامة إلى إضافاتك للتفاعل الخارجي، وادمج دوال الاستدعاء للسماح للمستخدمين بالارتباط بأحداث محددة في الإضافة.
دمج الأساليب العامة ودوال الاستدعاء درس مجاني في jQuery Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في jQuery Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة jQuery Academy 3 دروس في المجموع.
التفاعل مع إضافاتكم
الإضافات الرائعة ليست مستقلة فحسب، بل تتيح للمستخدمين التفاعل معها بعد تهيئتها! يعلّمكم هذا الدرس كيفية إضافة دوال عامة للتحكم الخارجي ودوال ردّ النداء لتنفيذ استجابات مخصّصة.
- الدوال العامة: دوال يمكن للمستخدمين استدعاؤها على مثيل إضافة مهيّأ.
- دوال ردّ النداء: دوال تُشغَّل عند وقوع أحداث محددة داخل الإضافة.
مراجعة أساسيات الإضافات
تذكّروا أن إضافات jQuery تُغلّف غالبًا داخل تعبير دالة يُستدعى فورًا (IIFE) لمنع تلويث النطاق العام. وتوفّر هذه البنية مكانًا آمنًا لمنطق الإضافة ومتغيراتها الداخلية.
سنَبني على هذا النمط المألوف.
(function($) {
$.fn.myPlugin = function(options) {
// Default settings
var settings = $.extend({}, $.fn.myPlugin.defaults, options);
return this.each(function() {
var $this = $(this); // The element the plugin is applied to
// Plugin logic goes here
console.log("Plugin initialized on: " + $this.attr('id'));
});
};
// Default options
$.fn.myPlugin.defaults = {
message: "Hello from plugin!"
};
})(jQuery);
// How to use (in HTML <div id="myElement"></div>):
// $('#myElement').myPlugin();ما الدوال العامة؟
الدالة العامة هي دالة تكشفها الإضافة، ويمكن استدعاؤها من خارج نطاقها الداخلي، حتى بعد تهيئة الإضافة على عنصر.
فكّروا فيها بوصفها جهاز تحكم عن بُعد لإضافتكم. يمكنكم توجيهها لتنفيذ أمور مثل "reset" أو "update" أو "get a value".
تنفيذ دالة عامة
لإضافة دوال عامة، نخزّن عادةً بيانات مثيل الإضافة (بما في ذلك دواله) مباشرةً في عنصر DOM باستخدام طريقة jQuery المسماة .data().
لننشئ إضافة بسيطة باسم "counter" ونضيف إليها دالة getValue.
(function($) {
$.fn.counterPlugin = function(options) {
var settings = $.extend({
initialValue: 0
}, options);
return this.each(function() {
var $this = $(this);
var value = settings.initialValue;
var methods = {
getValue: function() {
return value;
},
increment: function() {
value++;
$this.text(value); // Update display
},
init: function() {
$this.text(value); // Initial display
}
};
// Store methods on the element's data
$this.data('counterPlugin', methods);
methods.init(); // Initialize display
});
};
})(jQuery);
// HTML: <div id="myCounter"></div>
// Usage: $('#myCounter').counterPlugin();
// Later: $('#myCounter').data('counterPlugin').getValue();استدعاء الدوال العامة
بعد تهيئة الإضافة وتخزين دوالها عبر .data()، يمكنكم الوصول إليها واستدعاؤها مباشرةً.
يكمن المفتاح في استرداد المثيل المخزّن من العنصر أولًا، ثم استدعاء الدالة على ذلك المثيل.
// Assume counterPlugin from previous scene is loaded
// HTML: <div id="myCounter"></div>
$(document).ready(function() {
// Initialize the plugin
$('#myCounter').counterPlugin({ initialValue: 5 });
// Get the plugin instance
var counterInstance = $('#myCounter').data('counterPlugin');
// Call public methods
console.log("Current value: " + counterInstance.getValue());
counterInstance.increment();
console.log("After increment: " + counterInstance.getValue());
});ما دوال ردّ النداء؟
دوال ردّ النداء هي دوال تمرّرونها إلى الإضافة، فتُنفّذها الإضافة في نقاط محددة من دورة حياتها أو عند وقوع أحداث داخلية معينة.
وتتيح للمستخدمين "الارتباط" بسلوك الإضافة وإضافة منطقهم المخصّص دون تعديل الشيفرة المصدرية للإضافة.
- فكّروا فيها على أنها مستمعات أحداث لإجراءات الإضافة الداخلية.
- من دوال ردّ النداء الشائعة:
onInitوonChangeوonComplete.
تنفيذ دالة ردّ نداء
لتنفيذ دالة ردّ نداء، عرّفوها أولًا في الخيارات الافتراضية للإضافة. ثم استدعوا هذه الدالة داخل الإضافة عند وقوع الحدث ذي الصلة، مع تمرير أي بيانات مفيدة.
لنوسّع إضافة counter بإضافة دالة ردّ النداء onChange.
(function($) {
$.fn.counterPlugin = function(options) {
var settings = $.extend({
initialValue: 0,
onChange: function(newValue) {} // Default empty callback
}, options);
return this.each(function() {
var $this = $(this);
var value = settings.initialValue;
var methods = {
getValue: function() {
return value;
},
increment: function() {
value++;
$this.text(value);
// Call the callback when value changes
settings.onChange.call($this[0], value);
},
init: function() {
$this.text(value);
}
};
$this.data('counterPlugin', methods);
methods.init();
});
};
})(jQuery);
// Usage: See next scene!تمرير دوال ردّ النداء
يمرّر المستخدمون دوال ردّ النداء المخصّصة مباشرةً ضمن كائن خيارات الإضافة أثناء التهيئة. ثم تستدعي الإضافة هذه الدوال في الوقت المناسب.
لاحظوا كيفية استخدام .call($this[0], value). فهذا يعيّن this داخل دالة ردّ النداء إلى عنصر DOM، ويمرّر القيمة الجديدة كوسيطة.
// Assume counterPlugin with onChange callback is loaded
// HTML: <div id="myCounter"></div>
$(document).ready(function() {
$('#myCounter').counterPlugin({
initialValue: 10,
onChange: function(newValue) {
console.log("Counter changed to: " + newValue + " on element: " + this.id);
if (newValue % 2 === 0) {
$(this).css('color', 'blue');
} else {
$(this).css('color', 'red');
}
}
});
var counterInstance = $('#myCounter').data('counterPlugin');
counterInstance.increment(); // Triggers callback
counterInstance.increment(); // Triggers callback
});دوال ودوال ردّ نداء متعددة
يمكنكم تعريف عدة دوال عامة والعديد من دوال ردّ النداء المختلفة لمعالجة أحداث متنوعة داخل الإضافة. وينشئ ذلك مكوّنًا مرنًا وقويًا.
- تتيح الدوال العامة للمستخدمين إصدار أوامر إلى الإضافة.
- تتيح دوال ردّ النداء للإضافة إبلاغ شيفرة المستخدم بما يحدث.
(function($) {
$.fn.advancedCounter = function(options) {
var settings = $.extend({
initial: 0,
onIncrement: null, // New callback
onDecrement: null, // New callback
onReset: null // New callback
}, options);
return this.each(function() {
var $this = $(this);
var value = settings.initial;
var methods = {
getValue: function() { return value; },
increment: function() {
value++;
$this.text(value);
if ($.isFunction(settings.onIncrement)) {
settings.onIncrement.call($this[0], value);
}
},
decrement: function() {
value--;
$this.text(value);
if ($.isFunction(settings.onDecrement)) {
settings.onDecrement.call($this[0], value);
}
},
reset: function() {
value = settings.initial;
$this.text(value);
if ($.isFunction(settings.onReset)) {
settings.onReset.call($this[0], value);
}
},
init: function() { $this.text(value); }
};
$this.data('advancedCounter', methods);
methods.init();
});
};
})(jQuery);
// HTML: <div id="myAdvancedCounter"></div>
$(document).ready(function() {
$('#myAdvancedCounter').advancedCounter({
initial: 100,
onIncrement: function(v) { console.log("Inc: " + v); },
onReset: function(v) { console.log("Reset to: " + v); }
});
var inst = $('#myAdvancedCounter').data('advancedCounter');
inst.increment();
inst.reset();
});نصائح حول الدوال العامة ودوال ردّ النداء
عند تصميم الواجهة العامة لإضافتكم، ضعوا النصائح التالية في الاعتبار:
- اتساق التسمية: استخدموا أسماء واضحة ووصفية للدوال ودوال ردّ النداء.
- معالجة الأخطاء: تحقّقوا من أن دوال ردّ النداء هي دوال فعلًا قبل استدعائها (مثلًا،
$.isFunction(settings.onComplete)). - السياق: استخدموا
.call()أو.apply()لتعيين سياقthisلدوال ردّ النداء، وغالبًا ما يكون العنصر الذي تُطبَّق عليه الإضافة. - الوسيطات: مرّروا البيانات ذات الصلة إلى دوال ردّ النداء (مثل القيمة الجديدة أو كائن الحدث).
اختبار التفاعل مع الإضافات
لنفترض وجود إضافة jQuery مهيّأة على #myElement. تحتوي الإضافة على دالة عامة باسم doSomething() ودالة ردّ نداء باسم onComplete.
أي مقطع شيفرة يستدعي الدالة العامة بشكل صحيح ويمرّر دالة ردّ نداء مخصّصة أثناء التهيئة؟
مراجعة والخطوات التالية
لقد أتقنتم كيفية جعل إضافات jQuery تفاعلية ومرنة حقًا!
- تتيح الدوال العامة للشيفرة الخارجية التحكم في الإضافة والاستعلام عنها بعد تهيئتها.
- توفّر دوال ردّ النداء نقاط ربط تتيح للمستخدمين إدخال منطق مخصّص يتفاعل مع أحداث الإضافة الداخلية.
تُعدّ هذه التقنيات ضرورية لبناء إضافات jQuery قوية وقابلة لإعادة الاستخدام وسهلة الاستخدام.
الأسئلة الشائعة
هل درس «دمج الأساليب العامة ودوال الاستدعاء» مجاني؟
نعم — نص درس «دمج الأساليب العامة ودوال الاستدعاء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة jQuery Academy، انتقل إلى CoddyKit PRO. تتضمن دورة jQuery Academy 3 دروس في المجموع.
ماذا ستتعلم في «دمج الأساليب العامة ودوال الاستدعاء»؟
أضف أساليب عامة إلى إضافاتك للتفاعل الخارجي، وادمج دوال الاستدعاء للسماح للمستخدمين بالارتباط بأحداث محددة في الإضافة. تتمرن على jQuery Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ jQuery Academy؟
لا تُشترط خبرة سابقة. jQuery Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «دمج الأساليب العامة ودوال الاستدعاء»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس jQuery Academy هذا؟
نعم. كل درس في jQuery Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنماط تصميم الإضافات وتحديد النطاق
- إنشاء إضافات قابلة للتهيئة وإعادة الاستخدام
- دمج الأساليب العامة ودوال الاستدعاء