<a> ট্যাগে ডিফল্ট () প্রতিরোধ করুন


133

আমার কিছু HTML এবং jQuery রয়েছে যা divদেখানোর জন্য বা লুকানোর জন্য উপরে এবং নীচে স্লাইড করে a যখন কোনও লিঙ্ক ক্লিক করা হয়:

<ul class="product-info">
  <li>
    <a href="#">YOU CLICK THIS TO SHOW/HIDE</a>
    <div class="toggle">
      <p>CONTENT TO SHOW/HIDE</p>
    </div>
  </li>
</ul>
$('div.toggle').hide();
$('ul.product-info li a').click(function(event){
  $(this).next('div').slideToggle(200);
}

আমার প্রশ্নটি: preventDefault()লিঙ্কটিকে লিঙ্ক হিসাবে অভিনয় করা এবং আমার ইউআরএল শেষে এবং পৃষ্ঠার শীর্ষে জাম্পিংয়ের শেষে "#" যুক্ত করতে আমি কীভাবে ব্যবহার করব ?

আমি সঠিক সিনট্যাক্সটি বের করতে পারছি না, আমি কেবল ত্রুটি করে বলছি

প্রতিরোধ ডিফল্ট () কোনও ফাংশন নয়।

উত্তর:



53

hrefহিসাবে বৈশিষ্ট্য সেট করুনhref="javascript:;"

<ul class="product-info">
  <li>
   <a href="javascript:;">YOU CLICK THIS TO SHOW/HIDE</a>
  <div class="toggle">
    <p>CONTENT TO SHOW/HIDE</p>
  </div>
 </li>
</ul>

নোঙ্গরদের জন্য দুর্দান্ত ছোট রত্ন - ধন্যবাদ! এই কাজ করে কেন কেউ বর্ণনা করতে পারে?
justinpage

8
hrefঅ্যাঙ্কার ট্যাগ ( a) এর @KLVTZ বৈশিষ্ট্যটি খালি নাও থাকতে পারে ... তবে আমরা এটি সেট করতে পারি javascript:<code-here>, এটি বৈধ / বৈধ। এরপরে আমরা <code-here>একটি অর্ধসীমা যোগ করে কেবল একটি খালি বিবৃতিতে প্রবেশ করি । এই লিঙ্কটি কিছুই করে না।
স্টিজন ডি উইট

1
অনেক ধন্যবাদ! এটি আমাকে ক্যালপিএইচপি-র ব্রেডক্রামগুলিতে এই জাতীয় state এই-> এইচটিএমএল-> অ্যাডক্রাম্ব ('সেশনস', 'জাভাস্ক্রিপ্ট: উইন্ডো হিস্টোরি.ব্যাক ()) এর মতো একটি ব্যাক বোতাম কার্যকারিতা (পুশস্টেট দ্বারা সেট করা রাজ্যটি স্মরণ করে) সরবরাহ করতে সক্ষম করেছে; ');
পৃষ্ঠপোষক

38

এটি প্রস্তাবিত যে আপনি ব্যবহার করবেন না return false, ফলস্বরূপ 3 টি জিনিস ঘটে:

  1. event.preventDefault ();
  2. event.stopPropagation ();
  3. কলব্যাক এক্সিকিউশন বন্ধ করে এবং কল করার সাথে সাথে ফিরে আসে।

সুতরাং এই ধরণের পরিস্থিতিতে আপনার কেবলমাত্র ব্যবহার করা উচিত event.preventDefault();

নিবন্ধের সংরক্ষণাগার - jQuery ইভেন্টগুলি: মিথ্যা রিটার্ন মিথ্যা ব্যবহার বন্ধ করুন Mis


13

বিকল্পভাবে, আপনি ক্লিক ইভেন্ট থেকে কেবল মিথ্যা ফিরে আসতে পারেন:

 $('div.toggle').hide();
 $('ul.product-info li a').click(function(event){
  $(this).next('div').slideToggle(200);
+ return false; 
 });

যা A-Href ট্রিগার হওয়া বন্ধ করবে।

তবে নোট করুন, ব্যবহারের কারণে, এমন একটি আদর্শ বিশ্বে যে নতুন ব্যক্তির লিংকটি খুলতে চান তাদের জন্য href এর কোথাও কোথাও যাওয়া উচিত;)


1
হ্যাঁ, আমি মনে করি যে প্রশ্নের উত্তর না দিয়ে আমি কী ভাবছিলাম তার উত্তর দিয়েছিলাম :)
কেন্ট ফ্রেড্রিক

এর মূল্য কী, এর জন্য বহু বছর আগে এটি যুক্তিযুক্ত হয়েছিল যে hrefটিকে ট্রিগার হওয়ার হাত থেকে রক্ষা করতে আপনার -1 ফিরে আসা উচিত। আমি মনে করি না যে এটি আর কোনও ব্রাউজারে কাজ করে এবং পৃষ্ঠা ঝাঁপানো রোধ করতে আপনাকে অবশ্যই "মিথ্যা ফিরে" যেতে হবে।
র্যান্ডি

12

এটি একটি জিকুয়েরি সমাধান যা আমি সবেমাত্র পরীক্ষা করেছি এবং এটি কার্যকর।

<html lang="en">
<head>
<script type="text/javascript">
addEventListener("load",function(){
    var links= document.getElementsByTagName("a");
    for (var i=0;i<links.length;i++){
        links[i].addEventListener("click",function(e){
        alert("NOPE!, I won't take you there haha");
        //prevent event action
        e.preventDefault();
        })
    }
}); 

</script>
</head>
<body>
<div>
<ul>
    <li><a href="http://www.google.com">Google</a></li>
    <li><a href="http://www.facebook.com">Facebook</a></li>
    <p id="p1">Paragraph</p>
</ul>
</div>
<p>By Jefrey Bulla</p>
</body>
</html>

12
<ul class="product-info">
  <li>
    <a href="javascript:void(0);">YOU CLICK THIS TO SHOW/HIDE</a>
      <div class="toggle">
        <p>CONTENT TO SHOW/HIDE</p>
      </div>
  </li>
</ul>

ব্যবহার

জাভাস্ক্রিপ্ট: অকার্যকর (0);


@ আহমাদশারিফ আমি আজ এফএফ 40.0.3 এবং আইই 11 তে পরীক্ষা করেছি, এখনও কাজ আছে।
হ্যাচা

1
আমি মনে করি অকার্যকর (0) ব্যবহারকারীদের কাছে কুরুচিপূর্ণ / বিভ্রান্ত হতে পারে, যারা লিঙ্কটি হোভার করার পরে এটি দেখতে পাবে। আপনি আসলে যে কোনও বৈধ জেএস রাখতে পারেন, তাই আমি একটি মন্তব্য রাখতে চাই যা এটি কী করে তা বর্ণনা করে। যেমনhref="javascript:// Send Email"
কল্লিন

11

এখনো পর্যন্ত ব্যবহার করছে জাভাস্ক্রিপ্ট মধ্যে এই কাজ করার অন্য উপায় inline onclick, IIFE, eventএবং preventDefault():

<a href='#' onclick="(function(e){e.preventDefault();})(event)">Click Me</a>

হাই, বা <a href='#' onclick="event.preventDefault()">Click Me</a>
সোজা

6

বেশ কয়েকটি ক্রিয়াকলাপের পরে, পৃষ্ঠাটি শেষ পর্যন্ত লিঙ্কে চলে যাওয়ার পরে আপনি নিম্নলিখিতগুলি করতে পারেন:

          jQuery("a").click(function(e){
            var self = jQuery(this);
            var href = self.attr('href');
            e.preventDefault();
            // needed operations

            window.location = href;
          });

1
কেন করবেন preventDefaultএবং তারপরে নিজেই ডিফল্ট ক্রিয়াটি করেন? আপনাকে যা যুক্ত করতে হবে তা কেবল করুন এবং ডিফল্টটি এখনও ঘটতে দিন।
নাথনভদা

5

শুধু সিএসএসে কেন করবেন না?

আপনার অ্যাঙ্কর ট্যাগে 'href' বৈশিষ্ট্যটি বের করুন

<ul class="product-info">
  <li>
    <a>YOU CLICK THIS TO SHOW/HIDE</a>
    <div class="toggle">
      <p>CONTENT TO SHOW/HIDE</p>
    </div>
  </li>
</ul>

আপনার সিএসএসে,

  a{
    cursor: pointer;
    }


4

ইভেন্টটির প্রচার বন্ধ করা যদি আপনার বিরক্ত না করে, কেবল ব্যবহার করুন

return false;

আপনার হ্যান্ডেলার শেষে। JQuery এ এটি ডিফল্ট আচরণ প্রতিরোধ করে এবং এটি ইভেন্ট বুদবুদ বন্ধ করে।


4

return false;ইভেন্টের প্রচার বন্ধ করতে আপনি ইভেন্ট কলটি ব্যবহার করতে পারেন , এটি event.preventDefault();এটিকে উপেক্ষা করার মতো কাজ করে। অথবা javascript:void(0)প্রদত্ত অভিব্যক্তিটি মূল্যায়নের জন্য আপনি href বৈশিষ্ট্যে ব্যবহার করতে পারেন এবং তারপরে undefinedউপাদানটিতে ফিরে যেতে পারেন ।

ইভেন্টটি ডেকে এলে ফিরে আসা:

<a href="" onclick="return false;"> ... </a>

অকার্যকর ক্ষেত্রে:

<a href="javascript:void(0);"> ... </a>

আপনি এ সম্পর্কে আরও দেখতে পারেন: অ্যাঙ্কর ট্যাগের ইভেন্ট শ্রোতাদের উপর href এর জন্য শূন্য (0) যোগ করার এবং 'মিথ্যা ফেরত' যুক্ত করার কী কী প্রভাব রয়েছে?

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