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

من موسوعة حسوب
مراجعة 00:06، 21 يونيو 2018 بواسطة Khaled-yassin (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>‎.undelegate()‎‎‎‎‎‎‎‎‎‎‎‎‎</code>‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQ...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

‎.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" );

مصادر