التابع .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" );
مصادر