TypeError: jQuery ফাংশন কল করার সময় a কোনও ফাংশন নয়


214

আমার কাছে একটি ওয়ার্ডপ্রেস প্লাগইনে একটি সরল jQuery স্ক্রিপ্ট রয়েছে যা এই জাতীয় jQuery মোড়ক ব্যবহার করে:

$(document).ready(function(){

    // jQuery code is in here

});

আমি এই স্ক্রিপ্টটি ওয়ার্ডপ্রেস ড্যাশবোর্ডের মধ্যে থেকে কল করছি এবং jQuery ফ্রেমওয়ার্ক লোড হওয়ার পরে এটি লোড করছি।

যখন আমি ফায়ারব্যাগে পৃষ্ঠাটি পরীক্ষা করি আমি ক্রমাগত ত্রুটি বার্তাটি গ্রহণ করি:

TypeError: $ কোনও ফাংশন নয়

$ (ডকুমেন্ট) .ready (ফাংশন () {

আমি সম্ভবত এই ফাংশন স্ক্রিপ্ট মোড়ানো উচিত:

(function($){

    // jQuery code is in here

})(jQuery);

আমি বেশ কয়েকবার এই ত্রুটিটি পেয়েছি এবং কীভাবে এটি পরিচালনা করব তা নিশ্চিত নই।

কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।


3
আপনি যদি $কনসোলে টাইপ করেন এবং এন্টার টিপেন - আপনি কী দেখেন?
zerkms

কনসোলে চলার সময় আমি "অপরিজ্ঞাত" পেয়েছি
জেসন

উত্তর:


320

ডিফল্টরূপে আপনি যখন ওয়ার্ডপ্রেসে jQuery সন্নিবেশ করেন তখন আপনাকে অবশ্যই ব্যবহার করতে হবে jQueryএবং ব্যবহার করা হবে $না (এটি অন্যান্য গ্রন্থাগারের সাথে সামঞ্জস্যের জন্য) is

এটি মোড়ানোর আপনার সমাধানটি ভাল functionকাজ করবে, বা আপনি jQuery অন্য কোনও উপায়ে লোড করতে পারেন (তবে এটি ওয়ার্ডপ্রেসে সম্ভবত ভাল ধারণা নয়)।

যদি আপনার অবশ্যই ব্যবহার করা হয় তবে আপনি document.readyআসলে $ফাংশন কলটিতে যেতে পারেন :

jQuery(function ($) { ...

আমি দ্বিতীয় সংস্করণটি চেষ্টা করেছি তবে এটি কার্যকর হয়নি, প্রথম সংস্করণটি করেছে তবে আমি কেবল নিশ্চিত করতে চাই যে আমি jQuery কল করার ক্ষেত্রে দ্বিগুণ হচ্ছি না।
জেসন

@ জেসন আপনার এমনকি প্রয়োজন নেই; ঠিক ঠিক আমি যা পোস্ট করেছি: jsfiddle.net/vcbYJ
বিস্ফোরণ পিলগুলি

আপনি কি দয়া করে এই প্রশ্নটি ওয়ার্ডপ্রেসটি

আর যদি কোনও নির্বাচক বাইরে থাকেন তবে jQuery(function ($) { ...আপনাকে তার jQueryপরিবর্তে ব্যবহার করতে হবে$
মিশা রুদ্রস্তি

ধন্যবাদ ভাই. এটি প্রশংসা করুন
ডেস্পার

154

এটি এটি ঠিক করা উচিত:

jQuery(document).ready(function($){
  //you can now use $ as your jQuery object.
  var body = $( 'body' );
});

সহজ কথায় বলতে গেলে ওয়ার্ডপ্রেস আপনার নিজের স্ক্রিপ্টিং চালানোর আগে চালায় এবং তারা $ভ্যারিকে ছেড়ে দেয় যাতে এটি অন্যান্য লাইব্রেরির সাথে সংঘর্ষ না হয়। ওয়ার্ডপ্রেসটি সমস্ত ধরণের ওয়েব সাইট, অ্যাপস এবং অবশ্যই ব্লগের জন্য ব্যবহৃত হয় বলে এটি মোটামুটি বোঝায়।

তাদের ডকুমেন্টেশন থেকে:

ওয়ার্ডপ্রেস সহ অন্তর্ভুক্ত jQuery লাইব্রেরি noConflict () মোডে সেট করা হয়েছে (ডাব্লুপি-অন্তর্ভুক্ত / js / jquery / jquery.js দেখুন)। এটি অন্যান্য জাভাস্ক্রিপ্ট লাইব্রেরির সাথে সামঞ্জস্যতা সমস্যাগুলি রোধ করার জন্য যা ওয়ার্ডপ্রেস লিঙ্ক করতে পারে।

NoConflict () মোডে, jQuery জন্য গ্লোবাল $ শর্টকাট উপলভ্য নয় ...


28

এই সমাধানটি আমার পক্ষে কাজ করেছিল

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

আপনার কোড বন্ধের ভিতরে নিয়ে যান এবং $পরিবর্তে ব্যবহার করুনjQuery

আমি উপরের সমাধানটি /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when- using- a- jquery- plugin- in- ma এ পেয়েছি

... অনেক বেশি অনুসন্ধান করার পরে


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

@ মার্থা জেমস এটি আমার পক্ষে কাজ করে তাই এটি অন্তর্ভুক্ত করে। এটি অন্যের জন্য কাজ করতে পারে বা নাও পারে
বিক্রম শ্রেষ্ঠ






7

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

আপনি যদি jQuery এর এনক্যাপসুলেশন ব্যবহার করেন তবে এটি এই ক্ষেত্রে সহায়তা করবে না। দয়া করে এটি চেষ্টা করুন কারণ আমি মনে করি এটি সুন্দর এবং আরও সুস্পষ্ট, তবে jQuery সংজ্ঞায়িত না হলে আপনি একই ত্রুটি পাবেন।

শেষ পর্যন্ত ... jQuery বর্তমানে সংজ্ঞায়িত করা হয় নি।


আমি মনে করি এটি পরিবর্তিতভাবে সবকিছু ভেঙে যা সংজ্ঞায়িত করার পূর্বে এটি জিকুয়েরিটিকে অ্যাক্সেস করার চেষ্টা করার চেয়ে কিছু নয়। আপনার scriptরেফারেন্সগুলিকে আপনার JQueryশীর্ষে স্থানান্তরিত করার চেষ্টা করুন index.htmlএবং এটি সম্ভবত কার্যকর হবে
ড্যান মোলডোভান

এই উত্তরের আরও দৃশ্যমানতা প্রয়োজন। হ্যাঁ, যদি স্ট্যান্ডার্ড নেমস্পেসটি অন্য কোনও প্লাগইনের মাধ্যমে লোড করা jQuery এর কোনও সংস্করণ সহ নেওয়া হয় তবে অন্যান্যগুলি বৈধ। তবে যাচাই করুন যে আপনি অজান্তে (এবং সম্ভবত অহেতুক) একাধিকবার jQuery লোড করছেন না।
এডকেয়ে

6

এছাড়াও, আমি jQuery noConflict মোড ব্যবহারের জন্য ভাল সমাধান খুঁজে পাই।

(function($){

  $(document).ready(function(){
      // write code here
  });

  // or also you can write jquery code like this

  jQuery(document).ready(function(){
      // write code here
  });

})(jQuery);

আমি এই সমাধানটি এখান থেকে পেয়েছি। https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/


5

ব্যবহার

jQuery(document).

পরিবর্তে

$(document).

অথবা

ফাংশনটির মধ্যে, Qu আপনার প্রত্যাশা অনুযায়ী jQuery এ নির্দেশ করে

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

4

আমার জন্য কি কাজ করেছে। আমদানির জন্য প্রথম গ্রন্থাগার হ'ল ক্যুয়েরি লাইব্রেরি এবং ঠিক তখনই jQuery.noConflict () পদ্ধতিতে কল করুন।

<head>
 <script type="text/javascript" src="jquery.min.js"/>
 <script>
  var jq = jQuery.noConflict();
  jq(document).ready(function(){
  //.... your code here
    });
 </script>


3
<script>
var jq=jQuery.noConflict();
(function ($) 
    {
    function nameoffunction()
    {
        // Set your code here!!
    }

    $(document).ready(readyFn); 
    })(jQuery);

এখন jQuery এর জায়গায় jq ব্যবহার করুন


3

আপনার ফাংশনের নাম এবং ফাইলের আইডি নামগুলির একটি একই হলে আপনি এই সমস্যাটি জুড়ে আসবেন। কেবলমাত্র ফাইলের সমস্ত আইডি নাম অনন্য কিনা তা নিশ্চিত করুন।


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