jQuery 3.3

.off()




jquery

.off (الأحداث [، selector] [، handler]) العودة: jQuery

الوصف: قم بإزالة معالج الحدث.

  • الإصدار المضافة: 1.7 .off (الأحداث [، محدد] [، معالج])

    • أحداث
      اكتب: String
      واحد أو أكثر من أنواع الأحداث التي تم فصلها مسافات الفضاء ومساحات الأسماء الاختيارية ، أو مساحات الأسماء فقط ، مثل "click" أو "keydown.myPlugin" أو ".myPlugin".
    • منتخب
      اكتب: String
      محدد يجب أن يتطابق مع المحدد الذي تم تمريره أصلاً إلى .on() عند إرفاق معالجات الأحداث.
    • معالج
      النوع: Function ( Event eventObject)
      دالة معالج تم إرفاقها مسبقًا للحدث (الأحداث) ، أو القيمة الخاصة false .
  • الإصدار المضاف: 1.7 .off (events [، selector])

    • أحداث
      اكتب: PlainObject
      عنصر تمثل فيه مفاتيح السلسلة واحدًا أو أكثر من أنواع الأحداث التي تم فصلها مسافات الفضاء ومساحات الأسماء الاختيارية ، وتمثل القيم وظائف المعالج المرفقة مسبقًا بالحدث (الأحداث).
    • منتخب
      اكتب: String
      محدد يجب أن يتطابق مع المحدد الذي تم تمريره أصلاً إلى .on() عند إرفاق معالجات الأحداث.
  • الإصدار المضاف: 1.7 .off (حدث)

  • الإصدار المضاف: 1.7 .off()

    • هذا التوقيع لا يقبل أي حجج.

أسلوب .off() يزيل معالجات الأحداث التي تم إرفاقها باستخدام .on() . انظر مناقشة الأحداث المفوضة والمربوطة مباشرة على تلك الصفحة لمزيد من المعلومات. استدعاء .off() مع أية وسائط إزالة كافة معالجات تعلق على العناصر. يمكن إزالة معالجات أحداث معينة على العناصر من خلال توفير مجموعات من أسماء الأحداث أو مساحات الأسماء أو المحددات أو أسماء الدالات. عند إعطاء وسيطات تصفية متعددة ، يجب أن تتطابق جميع الوسيطات المقدمة لمعالج الحدث المراد إزالته.

إذا تم توفير اسم حدث بسيط مثل "click" ، تتم إزالة جميع أحداث هذا النوع (سواء المباشر أو المفوض) من العناصر الموجودة في مجموعة jQuery. عند كتابة التعليمات البرمجية التي سيتم استخدامها كمكوّن إضافي ، أو ببساطة عند العمل مع قاعدة رمز كبيرة ، فإن أفضل الممارسات هي إرفاق الأحداث وإزالتها باستخدام مساحات الأسماء بحيث لا تقوم التعليمات البرمجية بشكل غير مقصود بإزالة معالجات الأحداث المرفقة برمز آخر. يمكن إزالة جميع الأحداث من جميع الأنواع في مساحة اسم محددة من عنصر من خلال توفير مساحة اسم ، مثل ".myPlugin" . كحد أدنى ، يجب توفير مساحة اسم أو اسم حدث.

لإزالة معالجات الأحداث المفوّضة المحددة ، قم بتوفير وسيطة selector . يجب أن تتطابق سلسلة المحدد تمامًا مع السلسلة التي تم تمريرها إلى .on() عندما تم إرفاق معالج الحدث. لإزالة جميع الأحداث المفوَّضة من عنصر دون إزالة الأحداث غير المفوَّضة ، استخدم القيمة الخاصة "**" .

يمكن أيضًا إزالة معالج عن طريق تحديد اسم الدالة في وسيطة handler . عندما يقوم jQuery بإرفاق معالج أحداث ، يقوم بتعيين معرف فريد لوظيفة المعالج. jQuery.proxy() proxied بواسطة jQuery.proxy() أو آلية مشابهة جميعهم نفس المعرف الفريد (وظيفة البروكسي) ، لذلك قد يؤدي تمرير معالجات proxied إلى .off إلى إزالة معالجات أكثر مما هو مقصود. في هذه الحالات ، من الأفضل إرفاق معالجات الأحداث وإزالتها باستخدام مساحات الأسماء.

كما هو الحال مع .on() ، يمكنك تمرير events ككائن بدلاً من تحديد سلسلة events ووظيفة handler .on() منفصلة. مفاتيح كائن الأحداث هي الأحداث و / أو مساحات الأسماء؛ القيم هي وظائف معالج أو قيمة خاصة false .

أمثلة:

إضافة وإزالة معالجات الأحداث على الزر الملون.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>off demo</title>
  <style>
  button {
    margin: 5px;
  }
  button#theone {
    color: red;
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<button id="theone">Does nothing...</button>
<button id="bind">Add Click</button>
<button id="unbind">Remove Click</button>
<div style="display:none;">Click!</div>
 
<script>
function flash() {
  $( "div" ).show().fadeOut( "slow" );
}
$( "#bind" ).click(function() {
  $( "body" )
    .on( "click", "#theone", flash )
    .find( "#theone" )
      .text( "Can Click!" );
});
$( "#unbind" ).click(function() {
  $( "body" )
    .off( "click", "#theone", flash )
    .find( "#theone" )
      .text( "Does nothing..." );
});
</script>
 
</body>
</html>

عرض:

قم بإزالة كافة معالجات الأحداث من كافة الفقرات:

$( "p" ).off();

أزل جميع معالجات النقر المفوضة من جميع الفقرات:

$( "p" ).off( "click", "**" );

قم بإزالة معالج مقيد واحد فقط مسبقًا بتمريرها كوسيطة ثالثة:

var foo = function() {
  // Code to handle some kind of event
};
 
// ... Now foo will be called when paragraphs are clicked ...
$( "body" ).on( "click", "p", foo );
 
// ... Foo will no longer be called.
$( "body" ).off( "click", "p", foo );

إلغاء التوثيق لكافة معالجات الأحداث المفوضة من خلال مساحة الاسم الخاصة بهم:

var validate = function() {
  // Code to validate form entries
};
 
// Delegate events under the ".validator" namespace
$( "form" ).on( "click.validator", "button", validate );
 
$( "form" ).on( "keypress.validator", "input[type='text']", validate );
 
// Remove event handlers in the ".validator" namespace
$( "form" ).off( ".validator" );