রেফারেন্সএরর: ফায়ারফক্সে ইভেন্টটি সংজ্ঞায়িত ত্রুটি নয়


104

আমি একটি ক্লায়েন্টের জন্য একটি পৃষ্ঠা তৈরি করেছি এবং আমি প্রাথমিকভাবে ক্রোমে কাজ করছিলাম এবং এটি ফায়ারফক্সে কাজ করছে কিনা তা যাচাই করতে ভুলে গিয়েছিলাম। এখন, আমার একটি বড় সমস্যা আছে কারণ পুরো পৃষ্ঠাটি একটি স্ক্রিপ্টের উপর ভিত্তি করে ফায়ারফক্সে কাজ করে না।

এটি সমস্ত "লিঙ্ক" এর উপর ভিত্তি করে এমন একটি relযা সঠিক পৃষ্ঠাটি লুকিয়ে রাখার এবং দেখানোর দিকে নিয়ে যায়। আমি বুঝতে পারছি না কেন এটি ফায়ারফক্সে কাজ করছে না।

জন্য উদাহরণস্বরূপ পৃষ্ঠাগুলি আইডি থাকা #menuPage, #aboutPageএবং তাই। সমস্ত লিঙ্কে এই কোড রয়েছে:

<a class="menuOption" rel='#homePage' href="#">Velkommen</a> 

এটি ক্রোম এবং সাফারিতে পুরোপুরি কাজ করছে।

কোডটি এখানে:

$(document).ready(function(){

//Main Navigation


$('.menuOption').click(function(){

  event.preventDefault();
  var categories = $(this).attr('rel');
  $('.pages').hide();
  $(categories).fadeIn();


});

// HIDES and showes the right starting menu
    $('.all').hide();
    $('.pizza').show();


// Hides and shows using rel tags in the buttons    
    $('.menyCat').click(function(event){
        event.preventDefault();
        var categori = $(this).attr('rel');
        $('.all').hide();
        $(categori).fadeIn();
        $('html,body').scrollTo(0, categori);

    });


}); 

2
এটি "কাজ করে না" বলার সময় আপনার অর্থটি ঠিক কী বোঝাতে চাইলে এটি সত্যই সহায়ক হবে It কি হয় ? ত্রুটি? খারাপ লেআউট? খারাপ আচরণ?
পয়েন্টটি

উত্তর:


136

আপনি আপনার ইভেন্ট হ্যান্ডেলারদের (কিছু) ভুলভাবে ঘোষণা করছেন:

$('.menuOption').click(function( event ){ // <---- "event" parameter here

    event.preventDefault();
    var categories = $(this).attr('rel');
    $('.pages').hide();
    $(categories).fadeIn();


});

হ্যান্ডলারের প্যারামিটার হওয়ার জন্য আপনার "ইভেন্ট" দরকার। ওয়েবকিট আইই এর "ইভেন্ট" এর জন্য একটি বৈশ্বিক প্রতীক ব্যবহারের পুরানো আচরণ অনুসরণ করে তবে ফায়ারফক্স তা দেয় না। আপনি যখন jQuery ব্যবহার করছেন, সেই লাইব্রেরিটি আচরণটি স্বাভাবিক করে তোলে এবং আপনার ইভেন্ট হ্যান্ডলাররা ইভেন্ট প্যারামিটারটি পাস করেছে তা নিশ্চিত করে।

সম্পাদনা - পরিষ্কার করতে: আপনাকে কিছু প্যারামিটারের নাম সরবরাহ করতে হবে; ব্যবহার eventকরে তোলে পরিষ্কার আপনি মনস্থ করা কি, কিন্তু আপনি কল করতে পারেন eবা cupcakeবা অন্য কিছু।

এছাড়াও নোট করুন যে আপনার সম্ভবত "নেটিভ" (ক্রোম এবং আইআই এবং সাফারিতে) এর পরিবর্তে jQuery থেকে পাস করা প্যারামিটারটি ব্যবহার করা উচিত তা হ'ল একটি (প্যারামিটার) নেটিভ ইভেন্ট অবজেক্টের চারপাশে একটি jQuery মোড়ক। মোড়ক হ'ল যা ব্রাউজারগুলিতে ইভেন্টের আচরণকে স্বাভাবিক করে তোলে। আপনি যদি বিশ্বব্যাপী সংস্করণ ব্যবহার করেন তবে তা পাবেন না।


দুর্দান্ত ধন্যবাদ meteor.js প্রচুর ইভেন্ট ওয়ার ব্যবহার করে। ফাংশন () {.... ইভেন্ট পাস না করে এখনও ক্রোম এবং সাফারিতে কাজ করে। তবে ফায়ারফক্স ব্যর্থ হবে।
জিমি এমজি লিম

54

আপনি ফাংশনে eventপ্রবেশ করতে ভুলে গেছেন কারণ click:

$('.menuOption').on('click', function (e) { // <-- the "e" for event

    e.preventDefault(); // now it'll work

    var categories = $(this).attr('rel');
    $('.pages').hide();
    $(categories).fadeIn();
});

একটি পার্শ্ব নোট অন, eআরো সাধারণভাবে হিসাবে শব্দ উল্টোদিকে ব্যবহার করা হয় eventযেহেতু Eventঅধিকাংশ ব্রাউজার মধ্যে একটি বিশ্বব্যাপী পরিবর্তনশীল।


3
... অবশ্যই ফায়ারফক্স ছাড়া! প্যারামিটারের জন্য "ইভেন্ট" নামটি ব্যবহার করা ক্ষতি করে না কারণ এটি কোনও সংরক্ষিত শব্দ বা কোনও কিছু নয় not
পয়েন্টি

1
খুব সত্য, আমি অনুমান করি যে আমি সবেমাত্র ejQuery থেকে তুলেছি! @ পয়েন্টি
মার্ক পাইসাক - ট্রিলন.ইও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.