سؤال

أرغب في إرفاق حدث نقرة بعنصر زر ثم إزالته لاحقًا، لكن لا يمكنني تشغيل حدث (أحداث) unclick() أو unbind() كما هو متوقع.في الكود أدناه، الزر ذو لون "أسمر" ويعمل حدث النقر.

window.onload = init; 
function init() {
    $("#startButton").css('background-color', 'beige').click(process_click);
    $("#startButton").css('background-color', 'tan').unclick();
}

كيف يمكنني إزالة الأحداث من العناصر الخاصة بي؟

هل كانت مفيدة؟

المحلول

لا يوجد شيء مثل unclick().من أين لك هذا من؟

يمكنك إزالة معالجات الأحداث الفردية من عنصر عن طريق استدعاء unbind:

$("#startButton").unbind("click", process_click);

إذا كنت تريد إزالة كافة المعالجات، أو كنت تستخدم وظيفة مجهولة كمعالج، فيمكنك حذف الوسيطة الثانية unbind():

$("#startButton").unbind("click");

نصائح أخرى

أو يمكن أن يكون لديك موقف حيث تريد إلغاء ربط وظيفة النقر مباشرة بعد استخدامها، كما اضطررت إلى:

$('#selector').click(function(event){
    alert(1);
    $(this).unbind(event);
});

فك الارتباط هو صديقك.

$("#startButton").unbind('click')

هل أنت متأكد أنك تريد فك الارتباط؟ماذا لو أردت لاحقًا ربطه مرارًا وتكرارًا؟لا أحب ربط/إلغاء ربط التعامل مع الأحداث الديناميكية، نظرًا لأنها تميل إلى الخروج عن نطاق السيطرة، عند الاتصال بها من نقاط مختلفة في التعليمات البرمجية الخاصة بك.

قد ترغب في النظر في خيارات بديلة:

  • تغيير خاصية الزر "معطل".
  • قم بتنفيذ المنطق الخاص بك داخل وظيفة "process_click".

فقط سنتي 2، وليس حلاً عالميًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top