প্রকারের ত্রুটি: 'অপরিজ্ঞাত' কোনও ফাংশন নয় (মূল্যায়ন 'document (নথি)')


139
  1. আমি একটি ওয়ার্ডপ্রেস সাইট ব্যবহার করছি।
  2. আমি এই স্ক্রিপ্টটি শিরোনামে অন্তর্ভুক্ত করছি।

যখন স্ক্রিপ্টটি লোড হয়, আমি এই ত্রুটিটি পাই:

প্রকারের ত্রুটি: 'অপরিজ্ঞাত' কোনও ফাংশন নয় (মূল্যায়ন 'document (নথি)')

এটি কী কারণে ঘটছে বা এর অর্থ কী তা আমার কোনও ধারণা নেই।

ফায়ারব্যাগে, আমি এটি পেয়েছি:

কোন ফাংশন নয়


4
আপনার কাস্টম স্ক্রিপ্টের আগে আপনি jQuery লাইবারিটি অন্তর্ভুক্ত করছেন Netএবং ফায়ারব্যাগের ট্যাবে কোনও ত্রুটি নেই তা নিশ্চিত করুন (নিশ্চিত করুন যে jQuery আসলে বোঝা হয়ে গেছে)।
wsanville

... হ্যাঁ, অবশ্যই jQuery হাত আগে লোড হচ্ছে। আমি নিশ্চিত এটি একটি ওয়ার্ডপ্রেস এনকো ইস্যু।
dcolumbus

উত্তর:


239

ওয়ার্ডপ্রেস ডিফল্টরূপে noConflict মোডে jQuery ব্যবহার করে। আপনার jQueryএটি পরিবর্তনশীল নাম হিসাবে ব্যবহার করে উল্লেখ করতে হবে $, উদাহরণস্বরূপ ব্যবহার নয়

jQuery(document);

পরিবর্তে

$(document);

আপনি সহজেই এটিকে একটি স্বয়ং সম্পাদনকারী কার্যে গুটিয়ে রাখতে পারেন যাতে $আবার jQuery বোঝায় (এবং পাশাপাশি বিশ্বব্যাপী নেমস্পেসকে দূষিত করা এড়ানো যায়), যেমন

(function ($) {
   $(document);
}(jQuery));

5
লিপিটি প্রয়োজনীয় নয়; আপনি যেখানেই চান ঠিক jQuery(document)তার পরিবর্তে কল $(document)করতে পারেন। আপনি যদি এর $পরিবর্তে ব্যবহার করতে চান না, তবে উপরের স্ক্রিপ্টটি কেবল একটি ফাংশন তৈরি করে যা একটি আর্গুমেন্ট গ্রহণ $করে তারপরে এটি কার্যকর করে jQuery; সংক্ষেপে, ফাংশনটির মধ্যে, $jQuery দেখায় যেমনটি আপনি আশা করেন।
এল ইয়োবো

2
আসলে, আমি যা করেছি তা আমার স্বাভাবিক $(document).ready(function() { // code });জায়গায় $(document);রেখেছিল ... এটি একটি কবজির মতো কাজ করেছিল।
dcolumbus

1
হ্যাঁ, আমি এটিই পরামর্শ দিচ্ছিলাম - "ফাংশনের মধ্যেই, Qu jQuery এর দিকে নির্দেশ করুন যেমনটি আপনি প্রত্যাশা করবেন"।
এল ইয়াবো

ঠিক আছে, এটি আপনাকে কয়েকটা অক্ষর সেভাবে সংরক্ষণ করতে পারে :) স্ব-সম্পাদনকারী বিবৃতিটির ফাংশন () {} () ফর্ম সম্পর্কে আরও বিশদ ।
এল ইয়াবো

আমি জানি এটি পুরানো @ এলয়বো, তবে আমি মনে করি আপনি নিজের পোস্টটি সম্পাদনা করতে এবং দ্বিতীয় উদাহরণ হিসাবে প্রতিক্রিয়াতে আপনার প্রথম মন্তব্য থেকে আপনার উদাহরণ যুক্ত করতে পারেন। আমার সময় বাঁচানোর জন্য আপনাকে ধন্যবাদ =)
মানাটেক্স

25

JQuery এর ব্যবহার করুন noConflict। এটা আমার জন্য বিস্ময়কর কাজ করেছে

var example=jQuery.noConflict();
example(function(){
example('div#rift_connect').click(function(){
    example('span#resultado').text("Hello, dude!");
    });
});

এটি হ'ল, আপনার এইচটিএমএলে আপনি jQuery অন্তর্ভুক্ত বলে ধরে নিচ্ছেন

<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>


11

এই স্নিপেট ব্যবহার করে দেখুন:

jQuery(function($) {
  // Your code.
})

এটি আমার পক্ষে কাজ করেছিল, সম্ভবত এটি আপনাকেও সহায়তা করবে।


11

আমি কেবল ক্রোম এ এই সমস্যা ছিল।

আমি যোগ করার চেষ্টা করেছি

var $ =jQuery.noConflict();

ফোন করার ঠিক আগে

$(document).ready(function () {

এটা কাজ করেছে.

অনেক ধন্যবাদ


এই এক জন্য ধন্যবাদ। আমি জানতাম যে আমি "Qu" এর পরিবর্তে "jQuery" ব্যবহার করে সমস্যাটি সমাধান করতে পারি তবে আমার সমস্যাটি হ'ল কোমোডো সম্পাদনাটি সেইভাবে লেখার সময় শেষ হয়েছিল তাই আমাকে কোড হিন্টিং / সম্পূর্ণকরণ বা আমার জাভাস্ক্রিপ্ট আসলে কাজ করার মধ্যে থেকে বেছে নিতে হবে। এই পদ্ধতিটি আমার উভয় আছে।
জর্জ কেন্ড্রোস

6

এছাড়াও jQuery সহ অন্যান্য উপাদান / অন্যান্য লাইব্রেরি (jQuery UI এর মতো) এবং তারপরে অবিচ্ছিন্নভাবে আবার jQuery সহ চেক করুন - এটি jQueryটিকে নতুন করে সংজ্ঞায়িত করবে এবং উপাদান হেল্পারদের (.datepicker এর মতো) উদাহরণটি বাদ দেবে।


4
 ;(function($){
        // your code
    })(jQuery);

আপনার জেএস কোডটি উপরের ক্লোজারের ভিতরে রাখুন, এটি সমস্যার সমাধান করা উচিত।



2

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

এটি রেন্ডারিং ত্রুটি। সুতরাং এই jquery কোড ত্রুটি সমাধানের সমাধানগুলির মধ্যে একটি হতে পারে এই পদ্ধতিটি ব্যবহার করা।

jQuery(document).ready(function($){
/******** Body of Jquery Code*****/
});

এই কোডটি যা করে তা হ'ল jquery প্রয়োগ করে ফাংশনটির পরিবর্তনশীল হিসাবে '$' নিবন্ধিত করুন। অন্যথায় ডিফল্টরূপে .js ফাইলটি কেবল জাভাস্ক্রিপ্ট হিসাবে পঠিত হয়।


1

আমার পৃষ্ঠার শিরোনামে jQuery অন্তর্ভুক্ত করার পরেও হোস্টটি ইতিমধ্যে পৃষ্ঠাতে স্বয়ংক্রিয়ভাবে এটি অন্তর্ভুক্ত করছে না বুঝতে পেরে আমি এই সমস্যায় পড়েছিলাম। সুতরাং আপনার পৃষ্ঠা লাইভ লোড করুন এবং jQuery লিঙ্ক করা হচ্ছে কিনা তা দেখতে উত্সটি পরীক্ষা করুন।


1

দুটি জিনিস:

  1. আপনার $ (ডকুমেন্ট) এর আগে আপনার jQuery লাইব্রেরি যুক্ত হয়েছে তা নিশ্চিত হন।
  2. তারপরে কেবল সমস্ত "$" এর সাথে পরিবর্তন করুন: পূর্ববর্তী মন্তব্য হিসাবে jQuery।

1

এর মধ্যে সমস্ত স্ক্রিপ্ট মোড়ানো ...

<script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
      // Code that uses jQuery's $ can follow here.
    });
</script>

অনেক জাভাস্ক্রিপ্ট লাইব্রেরি jQuery ঠিক যেমন একটি ফাংশন বা পরিবর্তনশীল নাম হিসাবে ব্যবহার করে। JQuery এর ক্ষেত্রে, j jQuery এর জন্য কেবল একটি উপনাম, সুতরাং function ব্যবহার না করে সমস্ত কার্যকারিতা উপলব্ধ $ আপনি যদি jQuery পাশাপাশি অন্য জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করতে চান, library .NOConflict () এ কল করে library এর নিয়ন্ত্রণ অন্য লাইব্রেরিতে ফিরে যান । Qu এর পুরানো রেফারেন্সগুলি jQuery শুরু করার সময় সংরক্ষণ করা হয়; noConflict () কেবল এগুলি পুনরুদ্ধার করে।


1

আপনি নীচে স্নিপেটে jQuery এবং both উভয়ই ব্যবহার করতে পারেন। এটা আমার জন্য কাজ করে

jQuery( document ).ready(function( $ ) {
  // jQuery(document)
  // $(document)
});

1

আপনি function ফাংশনে পাস করতে পারেন ()

jQuery(document).ready(function($){

// jQuery code is in here

});

অথবা আপনি প্রতিস্থাপন করতে পারেন $(document);এই সঙ্গেjQuery(document);

অথবা আপনি ব্যবহার করতে পারেন jQuery.noConflict()

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  jq('selector').show();
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.