في مسج إذا قمت بإزالة عنصر سيتم إزالة أي أحداث على ذلك؟

StackOverflow https://stackoverflow.com/questions/1538243

  •  20-09-2019
  •  | 
  •  

سؤال

وعلى سبيل المثال إذا كان لدي ارتباط مع الحدث التالي المنضم إليه:

$("a.d").bind("click", this, onDelete);

وبعد القيام به:

$("a.d").remove();

هل هذا ما يرام؟ أو انها لا تسبب تسرب الذاكرة وأنا بحاجة إلى استدعاء 1 إلغاء التوثيق؟

وشكرا على اي مساعدة.

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

المحلول

وأنا لم تختبر ذلك، ولكن أعتقد أن إزالة عنصر سوف توثيق معالجات الأحداث فيها. لقد جئت إلى هذا الاستنتاج من مسج ثائق API (البحث عن إزالة) التي تنص على أنه إذا كنت تريد التحرك عنصر من جزء واحد من DOM إلى آخر ما يلي:

$("#foo").remove().appendTo("#bar");

ويجب أن يكتب

$("#foo").appendTo("#bar");

ولتجنب فقدان معالجات الأحداث.

نصائح أخرى

ومن مستندات مسج لإزالة ()

<اقتباس فقرة>   

وإزالة كافة العناصر المتطابقة من   DOM. هذا لا إزالتها من   الكائن مسج، مما يتيح لك استخدام   عناصر مطابقة أبعد من ذلك. ملحوظة   أن هذه الوظيفة تبدأ مع 1.2.2   وأيضا إزالة جميع معالجات الأحداث   والمخبأة داخليا البيانات.

والجواب هو نعم، طالما كان يعلق على الحدث مع مسج. إذا تعلق بشيء مثل "عند _ النقر" لا أعتقد أنها ستفعل ذلك.

وتتناول هذه المقالة بعض من ذلك. ويعرف أيضا وظيفة متكررة لإزالة كافة الأحداث انقر فوق عنصر عنصر وجميع أبنائه. وسوف تغطي مسج انقر معالجات وكذلك معالجات محددة مع ذلك عند _ النقر كنت تغطيتها.

HTTP: / /www.computerhowtoguy.com/how-to-use-the-jquery-unbind-method-on-all-child-elements/

function RecursiveUnbind($jElement) {
    // remove this element's and all of its children's click events
    $jElement.unbind();
    $jElement.removeAttr('onclick');
    $jElement.children().each(function () {
        RecursiveUnbind($(this));
    });
}

لاستخدام الدالة في المثال السابق يمكن أن نسميه وظيفة يمر عليه اسم "الحاوية" شعبة ككائن مسج.

RecursiveUnbind($('#container'));

لسجل، كنت لا داعي للقلق حول تسرب الذاكرة في جافا سكريبت. (البرد الرجل، وليس ج ++!)

ومحرك جافا سكريبت في المتصفح يدير كل الأشياء، والقمامة يجمع لهم. عندما أقول الأشياء، وهذا يعني وظائف الحدث معالجة جدا، لأن وظائف هي كائنات أيضا في جافا سكريبت.

ولا علاقة لها: أنا أحب كيف أن كل شيء هو كائن في جافا سكريبت: D

وهتاف!
JRH

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