التابع ‎‎jQuery.sub()‎‎ في jQuery

من موسوعة حسوب
< jQuery‏ | jQuery
اذهب إلى: تصفح، ابحث

jQuery.sub( )‎

أهمل مع الإصدار: 1.7.

حذف مع الإصدار: 1.9.

القيم المعادة

يعيد كائنًا من النوع jQuery.

الوصف

ينشئ هذا التابع نسخةً جديدةً من jQuery للتمكن من تعديل خاصِّيَّاتها وتوابعها دون المساس بالمكتبة الأصليَّة.

jQuery.sub( )‎

أُضيفت مع الإصدار: 1.5. لا يقبل هذا التابع أية وسائط.

أهمل هذا التابع بدءًا من الإصدار jQuery 1.7 وسيُنقل إلى إضافةٍ في الإصدار jQuery 1.8.

هنالك حالتان خاصَّتان أنشئ التابع jQuery.sub()‎ من أجلهما. الحالة الأولى هي من أجل توفير طريقة للتحكم بتوابع jQuery دون تخريب أو إفساد التوابع الأصليَّة، والحالة الثانية هي من أجل إجراء عمليَّة تغليف (encapsulation) وإنشاء مجال أسماء أساسي (basic namespacing) لإضافات jQuery.

الجدير بالذكر أنَّ التابع jQuery.sub()‎ لا يحاول القيام بأي نوع من أنواع الفصل، إذ ليس ذلك من مهامه. ستشير جميع توابع jQuery التي أنشئ منها إصدارٌ فرعيٌّ إلى jQuery الرئيسية (ستربط الأحداث مع jQuery الرئيسيَّة وستُستدعى عبرها، وستربط البيانات بالعناصر عبر jQuery الرئيسيَّة، وستنفَّذ استعلامات وأحداث Ajax عبر jQuery الرئيسيَّة، ...إلخ.).

انتبه إلى أنَّه إن أردت استعمال هذا التابع لتطوير إضافة، فيجب أن تأخذ بالحسبان استعمال شيء شبيه بالإضافة المنتجة jQuery UI التي تدير كلا الحالتين بالإضافة إلى توابع الإضافة الفرعيَّة. بعض الأمثلة حول استعمال الإضافة المنتجة jQuery UI لبناء إضافة تجدها هنا.

أفضل شرح للحالتين سابقتي الذكر هو عبر الأمثلة التي ستجدها في القسم التالي.

أمثلة

إضافة تابع إلى jQuery الفرعيَّة لكي يظهر لأي طرف خارجي:
(function(){
  var sub$ = jQuery.sub();
  sub$.fn.myCustomMethod = function() {
    return "just for me";
  };
 
  sub$( document ).ready(function() {
    sub$( "body" ).myCustomMethod() // "just for me"
  });
})();
 
typeof jQuery( "body" ).myCustomMethod // undefined
التحكم ببعض توابع jQuery وإضافة وظائف جديدة لها:
(function() {
  var myjQuery = jQuery.sub();
 
  myjQuery.fn.remove = function() {
 
    // وظيفة جديدة: استدعاء حذثٍ محذوف 
    this.trigger( "remove" );
 
    // remove الأصلي jQuery التأكد من استدعاء تابع
    return jQuery.fn.remove.apply( this, arguments );
  };
 
  myjQuery(function( $ ) {
    $( ".menu" ).click(function() {
      $( this ).find( ".submenu" ).remove();
    });
 
    // هذه jQuery الجديد من من نسخة remove استُدعِي الحدث
    $( document ).on( "remove", function( event ) {
      $( event.target ).parent().hide();
    });
  });
})();
 
// الاعتيادية لا تستدعي حدثًا محذوفًا عند حذف عنصرٍ jQuery إن
// المعدلة 'myjQuery' هذه الوظيفة موجودة فقط ضمن
إنشاء إضافة تستطيع إعادة توابع محدَّدة لإضافة أخرى:
(function() {
 
  // sub() باستعمال jQuery إنشاء نسخة جديدة من
  var plugin = jQuery.sub();
 
  // توسيع هذه النسخة بتوابع الإضافة الجديدة
  plugin.fn.extend({
    open: function() {
      return this.show();
    },
    close: function() {
      return this.hide();
    }
  });
 
  // الأصلية jQuery إدراج الإضافة الخاصة بنا إلى
  jQuery.fn.myplugin = function() {
    this.addClass( "plugin" );
 
    // التأكد من أن الإضافة الخاصة بنا تعيد إصدار إضافة jQuery الخاصة بنا
    return plugin( this );
  };
})();
 
$( document ).ready(function() {
 
  // موجود الآن open استدعاء الإضافة، والتابع
  $( "#main" ).myplugin().open();
 
  // غير موجود open إذا كان $( "#main" ).open() ملاحظة: لن يعمل الاستدعاء 
});

مصادر