javascript - event.preventDefault() বনাম ফেরত মিথ্যা




jquery javascript-events (8)

আপনি একটি উপাদান জন্য onClick ইভেন্টে অনেক ফাংশন স্তব্ধ করতে পারেন। আপনি কীভাবে নিশ্চিত হতে পারেন যে false আগুনে পুড়ে যাবে? preventDefault স্পষ্টভাবে উপাদান শুধুমাত্র ডিফল্ট আচরণ প্রতিরোধ করা হবে।

যখন আমি ইভেন্ট ইভেন্ট হ্যান্ডলারগুলিকে নির্দিষ্ট ইভেন্টটি কার্যকর করার পরে নির্বাহ থেকে আটকাতে চাই, তখন আমি দুটি কৌশলগুলির মধ্যে একটি ব্যবহার করতে পারি। আমি উদাহরণস্বরূপ jQuery ব্যবহার করব, তবে এটি প্লেইন-জেএস এও প্রযোজ্য:

1. event.preventDefault()

$('a').click(function (e) {
    // custom handling here
    e.preventDefault();
});

2. return false

$('a').click(function () {
    // custom handling here
    return false;
});

ইভেন্ট প্রচার বন্ধ দুটি পদ্ধতির মধ্যে কোন উল্লেখযোগ্য পার্থক্য আছে কি?

আমার জন্য, return false; একটি পদ্ধতি কার্যকর করার চেয়ে সহজ, ছোট এবং সম্ভবত কম ত্রুটি প্রবণ। পদ্ধতির সাথে, আপনাকে সঠিক আবরণ, বন্ধনী ইত্যাদি সম্পর্কে মনে রাখতে হবে।

এছাড়াও, পদ্ধতি কল করতে সক্ষম হওয়ার জন্য কলব্যাকের প্রথম পরামিতিটি সংজ্ঞায়িত করতে হবে। সম্ভবত, এমন কিছু কারণ আছে যা আমাকে এভাবে এড়াতে হবে এবং পরিবর্তে preventDefault ব্যবহার করবেন? ভাল উপায় কি?


আমার অভিজ্ঞতা থেকে আমার মতামত, এটা ব্যবহার করা সবসময় ভাল

event.preventDefault() 

বাস্তব ঘটনাটি থামাতে বা প্রতিরোধ করার ঘটনা, যখনই আমরা event.preventDefault() পরিবর্তে return false event.preventDefault() সূক্ষ্ম কাজ করে।


আমি মনে করি

event.preventDefault()

ঘটনা বাতিল করার W3C নির্দিষ্ট উপায়।

আপনি ইভেন্ট বাতিলকরণে W3C স্পেক এ এটি পড়তে পারেন।

এছাড়াও আপনি প্রতিটি পরিস্থিতিতে মিথ্যা ফিরে ব্যবহার করতে পারবেন না। Href এ্যার্রিবিউটে জাভাস্ক্রিপ্ট ফাংশন দেওয়ার সময় এবং যদি আপনি মিথ্যা ফিরিয়ে আনেন তবে ব্যবহারকারীটিকে মিথ্যা স্ট্রিং সহ একটি পৃষ্ঠায় পুনঃনির্দেশিত করা হবে।


আমি মনে করি এটি করার সর্বোত্তম উপায় হল event.preventDefault() ব্যবহার করা, কারণ হ্যান্ডলারের মধ্যে কিছু ব্যতিক্রম উত্থাপিত হলে, ফিরতি false বিবৃতিটি বাদ দেওয়া হবে এবং আচরণটি আপনি যা চান তা বিপরীত হবে।

তবে যদি আপনি নিশ্চিত হন যে কোডটি কোন ব্যতিক্রমগুলি ট্রিগার করবে না তবে আপনি যে কোনও পদ্ধতিতে যেতে পারেন।

যদি আপনি এখনও ফেরত false সঙ্গে যেতে চান, তাহলে আপনি নীচের মত একটি চেষ্টা ক্যাচ ব্লক আপনার সম্পূর্ণ হ্যান্ডলার কোড রাখতে পারেন:

$('a').click(function (e) {
  try{
      your code here.........
  }
   catch(e){}
  return false;
});

জাভাস্ক্রিপ্ট ব্যবহার করার সময়, মিথ্যাটি return false দিলে 3 টি আলাদা জিনিস করা হয়:

  1. event.preventDefault();
  2. event.stopPropagation();
  3. কলব্যাক মৃত্যুদন্ড বন্ধ এবং বলা হয় অবিলম্বে ফেরৎ।

JQuery ইভেন্টগুলি দেখুন : আরো তথ্য এবং উদাহরণগুলির জন্য ফিরতি মিথ্যা ব্যবহার করুন (মিস)


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

সুতরাং আমরা সহজেই বলতে পারি, jQuery মিথ্যা ফিরে আসার সমান:

ফেরত মিথ্যা e.preventDefault এবং e.stopPropagation হয়

তবে এটি jQuery বা DOM সম্পর্কিত সমস্ত ফাংশনগুলিতে ভুলে যাবেন না, যখন আপনি উপাদানটিতে এটি চালান, মূলত এটি ডিফল্ট আচরণ এবং ইভেন্টের প্রচার সহ সবকিছুই ফায়ারিং থেকে বাধা দেয়।

মূলত return false; ব্যবহার শুরু করার আগে return false; , প্রথমে বুঝতে হবে e.preventDefault(); এবং e.stopPropagation(); আপনি যদি একই সময়ে উভয় প্রয়োজন মনে করেন, তাহলে, সহজভাবে এটি ব্যবহার করুন।

সুতরাং মূলত নীচের এই কোড:

$('div').click(function () {
  return false;
});

এই কোড সমান :

$('div').click(function (event) {
  event.preventDefault();
  event.stopPropagation();
});

return false এবং event.preventDefault() মধ্যে প্রধান পার্থক্য হল return false নীচের কোডটি কার্যকর করা হবে না এবং event.preventDefault() ক্ষেত্রে আপনার কোডটি এই বিবৃতির পরে কার্যকর হবে।

আপনি ফিরতি মিথ্যা লিখুন যখন এটি দৃশ্যের পিছনে আপনার জন্য নিম্নলিখিত জিনিস না।

* Stops callback execution and returns immediately when called.
* event.stopPropagation();
* event.preventDefault();

একটি jQuery ইভেন্ট হ্যান্ডলারের মধ্যে থেকে return false কার্যকর jQuery.Event বস্তুর উভয় e.preventDefault এবং e.stopPropagation উভয়কে কল করার মতো কার্যকর

e.preventDefault() ডিফল্ট ইভেন্টটি ঘটতে বাধা দেবে, e.stopPropagation() ইভেন্টকে বুদবুদ করা থেকে বিরত রাখবে এবং return false উভয়ই করবে। উল্লেখ্য যে এই আচরণটি স্বাভাবিক (অ-জাভাস্ক্রিপ্ট) ইভেন্ট হ্যান্ডলারগুলির থেকে পৃথক, যা উল্লেখযোগ্যভাবে return false বুদবুদ করা থেকে বিরত রাখে না

উত্স: জন রেসিগ

Event.preventDefault () ব্যবহার করে কোন লাভের জন্য একটি href ক্লিক বাতিল করার জন্য "ফিরতি মিথ্যা" উপরে?





event-propagation