简体   繁体   中英

How to make the inactive tabs unclickable

I have these tabs but is it possible to make the other inactive tabs to be unclickable?

<div class="navbar">
   <div class="navbar-inner">
      <ul class="nav nav-tabs" style="display:inline-flex">
          <li class="active"><a href="#step1" data-toggle="tab">Step 1</a></li>
          <li><a href="#step2" data-toggle="tab">Step 2</a></li>
          <li><a href="#step3" data-toggle="tab">Step 3</a></li>
          <li><a href="#step4" data-toggle="tab">Step 4</a></li>
          <li><a href="#step5" data-toggle="tab">Step 5</a></li>
          <li><a href="#step6" data-toggle="tab">Step 6</a></li>
          <li><a href="#step7" data-toggle="tab">Step 7</a></li>
         </ul>
      </div>
  </div>

You can use :not() CSS selector with pointer-events: none; to disable click event.

 li:not(.active) a{ pointer-events: none; } 
 <div class="navbar"> <div class="navbar-inner"> <ul class="nav nav-tabs" style="display:inline-flex"> <li class="active"><a href="#step1" data-toggle="tab">Step 1</a></li> <li><a href="#step2" data-toggle="tab">Step 2</a></li> <li><a href="#step3" data-toggle="tab">Step 3</a></li> <li><a href="#step4" data-toggle="tab">Step 4</a></li> <li><a href="#step5" data-toggle="tab">Step 5</a></li> <li><a href="#step6" data-toggle="tab">Step 6</a></li> <li><a href="#step7" data-toggle="tab">Step 7</a></li> </ul> </div> </div> 

Simply add this class to the tabs that you want to disable the clicks. Here is the css.

.avoid-clicks {
 pointer-events: none;
}

disable them all and enable the active one

$('li').prop('disabled',true);
$('.active').prop('disabled',false);

To disable the links on the fly using jquery try this:

 $(document).ready(function(){ $("a").click(function(event){ event.preventDefault(); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <a href="https://google.com/">Go to google</a> 

To get the best result you can:

  1. Add the disabled class to the li element
  2. Remove the data-toggle attribute for the a

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <!-- Latest compiled and minified JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> <div class="navbar"> <div class="navbar-inner"> <ul class="nav nav-tabs" style="display:inline-flex"> <li class="active"><a href="#step0" data-toggle="tab">Step 0</a></li> <li><a href="#step1" data-toggle="tab">Step 1</a></li> <li class="disabled"><a href="#step2" >Step 2</a></li> <li class="disabled"><a href="#step3" >Step 3</a></li> <li class="disabled"><a href="#step4" >Step 4</a></li> </ul> </div> </div> 

You can add the following rules to your non-active items to make them unclickable. This was suggested in the following post:

How to disable all div content

.disabled, li:not(.active) {
  pointer-events: none;
  opacity: 0.4;
}

 ul { display: inline-flex; width: 100%; list-style-type: none; margin: 0; padding: 0; height: 1em; line-height: 1em; } li { width: 14%; height: 2em; margin: 0.1%; line-height: 2em; background-color: #FFF; border: thin solid #777; text-align: center; } li a { display: block; width: 100%: height: 100%; text-decoration: none; } li a, li a:active, li:visited { color: #48A; } li a:hover { color: #5AC; text-decoration: underline; } .active { background-color: #FFF; font-weight: bold; border: thin solid #DDD; } .disabled, li:not(.active) { background-color: #AAA; pointer-events: none; opacity: 0.4; } 
 <div class="navbar"> <div class="navbar-inner"> <ul class="nav nav-tabs"> <li class="active"><a href="#step1" data-toggle="tab">Step 1</a></li> <li><a href="#step2" data-toggle="tab">Step 2</a></li> <li><a href="#step3" data-toggle="tab">Step 3</a></li> <li><a href="#step4" data-toggle="tab">Step 4</a></li> <li><a href="#step5" data-toggle="tab">Step 5</a></li> <li><a href="#step6" data-toggle="tab">Step 6</a></li> <li><a href="#step7" data-toggle="tab">Step 7</a></li> </ul> </div> </div> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM