99

For many reasons I need to disable clicking on certain content within a div element. Due to clicking ads attacks, for example. I still want it to be visible tho.

Consider the following snippet :-

<div class="ads">
something should be here, i do not want to be clicked
</div>

how to disable the abilities of left-clicking whithin that div?

Aviad
  • 3,424
  • 3
  • 14
  • 21
Reham Fahmy
  • 1,058
  • 1
  • 7
  • 10
  • FWIW, ads are typically written into iframes to prevent the host page from having access – Rob M. Jan 22 '15 at 07:57
  • check this out http://stackoverflow.com/questions/5259191/disable-clicking-of-a-divs-element – rasso Jan 22 '15 at 07:57

6 Answers6

199

The CSS property that can be used is:

pointer-events:none

!IMPORTANT Keep in mind that this property is not supported by Opera Mini and IE 10 and below (inclusive). Another solution is needed for these browsers.

jQuery METHOD If you want to disable it via script and not CSS property, these can help you out: If you're using jQuery versions 1.4.3+:

$('selector').click(false);

If not:

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

You can re-enable clicks with pointer-events: auto; (Documentation)

Note that pointer-events overrides the cursor property, so if you want the cursor to be something other than the standard cursor, your css should be place after pointer-events.

ashleedawg
  • 20,365
  • 9
  • 72
  • 105
Aviad
  • 3,424
  • 3
  • 14
  • 21
  • 2
    Oh you are my life saver! I did spend a lot of time try to find out how to prevent user from clicking on an item. Later on, "cursor event" phrase appeared in my head and I got your answer. Cool, isn't it? – Travis Le Oct 07 '19 at 11:32
  • Now it's supported by mobile Opera: https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events – macabeus Jan 17 '20 at 17:11
  • 1
    I have a component that floating on another component, they aren't parent-child related, and I don't want the user to click on the above one. Your CSS method works like a charm. – Lê Quang Bảo Dec 03 '20 at 04:14
51

If you want it in pure CSS:

pointer-events:none;
Abe Hendlish
  • 707
  • 5
  • 11
7

Try this:

pointer-events:none

Adding above on the specified HTML element will prevents all click, state and cursor options.

http://jsfiddle.net/4hrpsrnp/

<div class="ads">
 <button id='noclick' onclick='clicked()'>Try</button>
</div>
Rakesh_Kumar
  • 1,442
  • 1
  • 14
  • 30
4

You can use css

.ads{pointer-events:none}

or Using javascript prevent event

$("selector").click(function(event){
   event.preventDefault();
});
MOT EL
  • 182
  • 10
3

If using function onclick DIV and then want to disable click it again you can use this :

for (var i=0;i<document.getElementsByClassName('ads').length;i++){
    document.getElementsByClassName('ads')[i].onclick = false;
}

Example :
HTML

<div id='mybutton'>Click Me</div>

Javascript

document.getElementById('mybutton').onclick = function () {
    alert('You clicked');
    this.onclick = false;
}
LY MOT
  • 66
  • 4
1

How to disable clicking another div click until first one popup div close

Image of the example

 <p class="btn1">One</p>
 <div id="box1" class="popup">
 Test Popup Box One
 <span class="close">X</span>
 </div>

 <!-- Two -->
 <p class="btn2">Two</p>
 <div id="box2" class="popup">
 Test Popup Box Two
 <span class="close">X</span>
  </div>

<style>
.disabledbutton {
 pointer-events: none;
 }

.close {
cursor: pointer;
}

</style>
<script>
$(document).ready(function(){
//One
$(".btn1").click(function(){
  $("#box1").css('display','block');
  $(".btn2,.btn3").addClass("disabledbutton");

});
$(".close").click(function(){
  $("#box1").css('display','none');
  $(".btn2,.btn3").removeClass("disabledbutton");
});
</script>
bluish
  • 26,356
  • 27
  • 122
  • 180
Ashar Zafar
  • 382
  • 2
  • 11