2013-03-29 15 views
13

Powiedzmy mam:Czy można wykryć kliknięcie elementu: after lub: before pseudo z jQuery?

<div></div> 

z:

div { 
    width: 500px; 
    height: 500px; 
    position: relative; 
} 
div:after { 
    content: ''; 
    display: block; 
    width: 20px; 
    height: 20px; 
    position: absolute; 
    top: 0; 
    right: 0; 
} 

Czy mogę zrobić coś takiego $('div:after').click(function(){...});? I niech to się nie stanie, jeśli kliknę na div, ale nie na div:after.

+2

Dlaczego nie można po prostu podzielić go na inny element i zapisać ból głowy? – mattytommo

+2

Nie. Dlatego są pseudoelementami. –

+0

@mattytommo Chcę tylko wiedzieć, czy to możliwe. – dezman

Odpowiedz

7

Może. W zależności od tego, jak ustrukturyzujesz zawartość pseudo, będziesz musiał polegać na obliczaniu pozycji myszy dla kliknięć na rzeczywistym elemencie div. Wszystkie programy obsługi zdarzeń będą działały na div, a nie na pseudo element, ponieważ nie istnieje on w DOM.

Aby uzyskać więcej informacji, zobacz numer Manipulating CSS :before and :after pseudo-elements using jQuery . Zwłaszcza odpowiedź BoltClock.

patrz także komentarz Felixa dla innego możliwego rozwiązania bez pozycji myszy: Only detect click event on pseudo-element

+1

Nie mogę znaleźć żadnego komentarza od felix. –

Powiązane problemy