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

من موسوعة حسوب

‎.undelegate()‎

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

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

اٌُهمل مع الإصدار: 3.0.

الوصف

إزالة معالج من الحدث لكافة العناصر التي تطابق المُحدِّد الحالي، استنادًا إلى مجموعة محددة من عناصر الجذر.

‎.undelegate()‎

أُضيف مع الإصدار: 1.4.2.

هذا الشكل لا يقبل أي وسائط.

‎.undelegate( selector, eventType )‎

أُضيف مع الإصدار: 1.4.2.

selector

المحدد المستخدم لترشيح نتائج الحدث، وهو من النوع String.

eventType

سلسلة نصية من النوع String تحتوي على نوع حدث في JavaScript، مثل click أو keydown.

‎.undelegate( selector, eventType, handler )‎

أُضيف مع الإصدار: 1.4.2.

selector

المحدد المستخدم لترشيح نتائج الحدث، وهو من النوع String.

eventType

سلسلة نصيةمن النوع String تحتوي على نوع حدث في JavaScript، مثل click أو keydown.

handler

دالة تُنفذ عند إطلاق الحدث، وهي على الشكل Function( Event eventObject )‎.

‎.undelegate( selector, events )‎

أُضيف مع الإصدار: 1.4.3.

selector

المحدد المستخدم لترشيح نتائج الحدث، وهو من النوع String.

events

كائن من النوع PlainObject وهو يحتوي على نوع حدث واحد أو أكثر ودوال مرتبطة مسبقًا لإزالتها منها.

‎.undelegate( namespace )‎

أُضيف مع الإصدار: 1.6.

namespace

سلسلة نصية من النوع String تحتوي على مساحة اسم المراد إزالة كل الأحداث منها.

أهمل ‎.undelegate()‎‎ بدءًا من الإصدار jQuery 3.0. وحل محله التابع ‎.off()‎ منذ الإصدار jQuery 1.7، لذا كان استخدامه غير محبذ بالفعل.

يعد التابع ‎.undelegate()‎‎ طريقة لإزالة معالجات الأحداث التي سبق ربطها باستخدام ‎.delegate()‎.

أمثلة

يمكن ربط الأحداث بالزر الملون ثم إزالتها منه:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>undelegate 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">لا يحدث شيء...</button>
<button id="bind">ربط النقر</button>
<button id="unbind">إزالة النقر</button>
<div style="display:none;">انقر!</div>
 
<script>
function aClick() {
  $( "div" ).show().fadeOut( "slow" );
}
$( "#bind" ).click(function() {
  $( "body" )
    .delegate( "#theone", "click", aClick )
    .find( "#theone" ).text( "يمكن النقر!" );
});
$( "#unbind" ).click(function() {
  $( "body" )
    .undelegate( "#theone", "click", aClick )
    .find( "#theone" ).text( "لا يحدث شيء..." );
});
</script>
 
</body>
</html>

لإزالة جميع الأحداث المُرفقة من جميع الفقرات <p>:

$( "p" ).undelegate();

لإزالة جميع أحداث النقر المُرفقة من جميع الفقرات <p>:

$( "p" ).undelegate( "click" );

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

var foo = function () {
  // شيفرة للتعامل مع نوع من الأحداث
};
 
//  ... الآن سيستدعى foo عند النقر فوق الفقرات ...
$( "body" ).delegate( "p", "click", foo );
 
//  ... لن يستدعى foo بعد الآن.
$( "body" ).undelegate( "p", "click", foo );

لإزالة جميع الأحداث المُرفقة من خلال مجال الأسماء الخاص بها:

var foo = function() {
  // شيفرة للتعامل مع نوع من الأحداث
};
 
// إرفاق الأحداث تحت مساحة الاسم ".whatever"
$( "form" ).delegate( ":button", "click.whatever", foo );
 
$( "form" ).delegate( "input[type='text'] ", "keypress.whatever", foo );
 
// إلغاء ارفاق كافة الأحداث المرفقة تحت مساحة الاسم ".whatever"
$( "form" ).undelegate( ".whatever" );

مصادر