Search code examples
javascriptjquerycsspseudo-element

Use javascript to click on a pseudo-element?


I'm wondering how to enable the clicking on a :before pseudo-element (the orange part of the div on the JSfiddle I link to below). I've read that since pseudo-elements aren't in the DOM you would need a hack for this. Unfortunately, I can't find an existing Stackoverflow Q&A that actually shows working code.

Link: http://jsfiddle.net/Vv6Eb/4/

HTML:

<div></div>

CSS:

div { position:relative; background-color:#333;
      padding:20px; margin:20px; float:left; 
}

div:before { content:""; display:block; 
    padding:5px; background-color:#f60; border:2px solid white; 
    position: absolute; top:-2px; right:-2px; border-bottom-left-radius: 10px; 
}

Solution

  • A workaround for this would be to dynamically append a <span> to the item and assigning a click method to it. Like this fiddle.

    var item = $('<span />');
    item.click(function() { alert('click'); });
    $('div').append(item);
    

    CSS

    div { position:relative; background-color:#333;
          padding:20px; margin:20px; float:left;
    }
    
    div span { content:""; display:block;
        padding:5px; background-color:#f60; border:2px solid white;
        position: absolute; top:-2px; right:-2px; border-bottom-left-radius: 10px;
    }