سؤال

وهذا السؤال هو أساسا بدافع الفضول (لدي حل عمل مختلفة للقضية). تحاول أن تفعل بعض التحسين التدريجي الأساسية: ينبغي أن يكون جدول كل صف للنقر للذهاب إلى صفحة أخرى باستخدام جافا سكريبت. بالنسبة للأشخاص ث / جافا سكريبت، هناك ارتباط في العمود الأول من كل صف. إذا تم تشغيل الجافا سكريبت، يجب تعطيل الروابط. واحدة من العديد من طرق بسيطة للقيام بذلك هو

a.setAttribute("onclick", "return false;");

وبعد تهيئة النقر الأحداث في الصفوف. ولكن يبدو أكثر أناقة لاستخدام addEventListener لتحقيق نفس

a.addEventListener("click", function() { return false; }, false);

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

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

المحلول

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

وa.setAttribute ( "عند _ النقر"، "عودة كاذبة؛")؛

وتجنب على SetAttribute، يجب أن لا حاجة إليها للتعامل مع وثائق HTML وهناك مشاكل المتصفح (وخصوصا مع IE، وخصوصا مع معالجات الأحداث). بدلا من استخدام المباشرة خصائص DOM HTML:

a.onclick= function() {
    return false;
};

وaddEventListener على ما يرام إذا كنت تستخدم preventDefault () على النحو الذي اقترحه fphilipe، ولكن كنت بحاجة إلى دعم attachEvent لIE حيث لا يتم اعتماد DOM الأحداث. قد تكون هذه مبالغة لمجرد محاولة لتعطيل الارتباط.

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

لذلك يمكن أن removeChild ()، أو replaceChild مع فترة مع النص نفسه، أو ركلة النص من الرابط التالي:

while (a.firstChild)
    a.parentNode.insertBefore(a.firstChild, a);
a.parentNode.removeChild(a);

نصائح أخرى

a.addEventListener("click", function(event) { event.preventDefault(); return false; }, false);

وهذا يجب أن تتناسب مع احتياجاتك.

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