jQuery 1.9 .live () কোনও ফাংশন নয়


242

আমি সম্প্রতি jQuery 1.8 থেকে 2.1 এ আপডেট করেছি। আমি হঠাৎ আবিষ্কার করেছিলাম যে .live()কাজ করা থামছে।
আমি ত্রুটি পেয়েছি TypeError: $(...).live is not a function

আমি কি এর জায়গায় কোন পদ্ধতি ব্যবহার করতে পারি .live()?

উত্তর:


509

jQuery .live()1.9 সংস্করণে অপসারণ করা হয়েছে।

এর অর্থ আপনি যদি সংস্করণ 1.8 এবং তার আগের সংস্করণ থেকে আপগ্রেড করছেন তবে নীচের স্থানান্তর গাইডটি অনুসরণ না করলে আপনি জিনিসগুলি ভাঙ্গার লক্ষ্য করবেন। আপনি কেবল .live()সঙ্গে প্রতিস্থাপন করা উচিত নয় .on()!


আপনি অনুসন্ধান শুরু করে প্রতিস্থাপন করার আগে পড়ুন:

জন্য দ্রুত / গরম সংশোধন করা হয়েছে একটি লাইভ সাইটে, না শুধু শব্দ প্রতিস্থাপন liveসঙ্গে on,
যেমন পরামিতি আলাদা !

.live(events, function)

মানচিত্র করা উচিত:

.on(eventType, selector, function)

(শিশু) নির্বাচকটি খুব গুরুত্বপূর্ণ! আপনার যদি কোনও কারণে এটি ব্যবহার করার প্রয়োজন না হয় তবে সেট করে দিন null


হিজরত উদাহরণ 1:

আগে:

$('#mainmenu a').live('click', function)

এর পরে, আপনি বাচ্চা উপাদানটি ( a) .on()নির্বাচন করতে যান:

$('#mainmenu').on('click', 'a', function)

অভিবাসন উদাহরণ 2:

আগে:

$('.myButton').live('click', function)

এর পরে, আপনি উপাদানটি ( .myButton)টিকে .on()নির্বাচকের কাছে নিয়ে যান এবং নিকটতম পিতামূলক উপাদানটি পান (পছন্দমতো কোনও আইডি সহ):

$('#parentElement').on('click', '.myButton', function)

অভিভাবক হিসাবে কী রাখবেন তা যদি আপনি না জানেন তবে bodyসর্বদা কাজ করে:

$('body').on('click', '.myButton', function)

আরো দেখুন:


56

আপনি নিম্নলিখিত জাভাস্ক্রিপ্ট কোডটি অন্তর্ভুক্ত করে আপনার কোডটিকে পুনরায় সাজানো এড়াতে পারবেন

jQuery.fn.extend({
    live: function (event, callback) {
       if (this.selector) {
            jQuery(document).on(event, this.selector, callback);
        }
        return this;
    }
});

3
return this;শৃঙ্খলাবদ্ধতা সংরক্ষণের জন্য ফাংশনের শেষে একটি অন্তর্ভুক্ত করা উচিত
গেরিলা

এটি ব্যবহার করে ভবিষ্যতে কোনও সমস্যা দেখা দেবে?
ইসলাম এলশোবোকশী

15

JQuery API ডকুমেন্টেশন তালিকাগুলি live()1.7 সংস্করণ হিসাবে অবচিত হয়েছে এবং সংস্করণ 1.9: লিঙ্ক হিসাবে সরানো হয়েছে ।

সংস্করণ অবচয়: 1.7, সরানো: 1.9

অধিকন্তু এতে বলা হয়েছে:

JQuery 1.7 হিসাবে, .live () পদ্ধতি অবমূল্যায়ন করা হয়েছে। ইভেন্ট হ্যান্ডলার সংযুক্ত করতে .on () ব্যবহার করুন । JQuery এর পুরানো সংস্করণ ব্যবহারকারীদের .live () এর অগ্রাধিকার হিসাবে .delegate () ব্যবহার করা উচিত


ফরওয়ার্ড সামঞ্জস্যপূর্ণ সংস্করণ উল্লেখ করার জন্য আপনাকে ধন্যবাদ: ডেলিগেট ()
এডওয়ার্ড ওলামিসান

13

.live()JQuery> = 1.9 এর ফরওয়ার্ড পোর্ট .live() অপ্টিমাইজড ডিওএম সিলেক্টর প্রসঙ্গ ব্যবহারের উপর জেএস নির্ভরতাগুলি রিফ্যাক্টর করা এড়ানো

/** 
 * Forward port jQuery.live()
 * Wrapper for newer jQuery.on()
 * Uses optimized selector context 
 * Only add if live() not already existing.
*/
if (typeof jQuery.fn.live == 'undefined' || !(jQuery.isFunction(jQuery.fn.live))) {
  jQuery.fn.extend({
      live: function (event, callback) {
         if (this.selector) {
              jQuery(document).on(event, this.selector, callback);
          }
      }
  });
}

এটি আমার ক্ষেত্রে দুর্দান্ত সূক্ষ্মভাবে কাজ করেছে: jQuery 1.11.2 এ বাধ্যতামূলকভাবে কাজ করতে পারে। ধন্যবাদ!
vcoppolecchia

5

.live () অবমূল্যায়ন করা হয়েছিল এবং এখন jQuery 1.9 থেকে সরানো হয়েছে আপনার .on () ব্যবহার করা উচিত



5

একটি খুব সাধারণ ফিক্স যা আপনার কোড পরিবর্তন করার দরকার নেই, কেবল jquery মাইগ্রেশন স্ক্রিপ্ট যুক্ত করুন, এখানে ডাউনলোড করুন https://github.com/jquery/jquery-migrate/

এটি "লাইভ", "ব্রাউজার" ইত্যাদির মতো প্রয়োজনীয় ফাংশনগুলি jquery সরবরাহ করে


2

আমি প্রয়োজন না হলে .on () সিনট্যাক্স ব্যবহার না করি। উদাহরণস্বরূপ আপনি এর মতো আরও সহজ স্থানান্তর করতে পারেন:

পুরানো:

$('.myButton').live('click', function);

নতুন:

$('.myButton').click(function)

বৈধ ইভেন্ট হ্যান্ডলারের একটি তালিকা এখানে রয়েছে: https://api.jquery.com/category/forms/


3
আমি মনে করি কেবলমাত্র গতিশীল লোড সামগ্রীর জন্য .on () সিনট্যাক্সের প্রয়োজন (উদাহরণস্বরূপ, পৃষ্ঠাটি লোড হওয়ার পরে যুক্ত উপাদানগুলি)।
T30

1

আপনি যদি রেলস অফ রেলস এর jQuery রত্ন ব্যবহার করছেন jquery-railsএবং কোনও কারণে আপনি আপনার উত্তরাধিকার কোডটি রিফ্যাক্ট করতে না পারেন তবে সর্বশেষ সংস্করণটি এখনও সমর্থন করে 2.1.3এবং আপনি এটিতে আপনার নীচের বাক্য গঠন ব্যবহার করে লক করতে পারেন Gemfile:

gem 'jquery-rails', '~> 2.1', '= 2.1.3'

তারপরে আপনি আপডেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

bundle update jquery-rails

আমি আশা করি অন্যদের অনুরূপ সমস্যার মুখোমুখি হতে সহায়তা করবে।

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