RadCor
@RadCor
Если мой ответ вам помог, отмечайте его решением.

Как назначиь click на текст который в :after/:before?

Всем привет, сейчас пилю простое поп ап окошко для сайта.
Так вот, мне не охота для крестика (закрытие окна) делать отдельный div или span, я запихнул его в :after

Так вот, как мне назначить событие click не на всё окно, а только на его первоэлемент :after ? И вообще реально ли это?

Для наглядности вот код: jsfiddle.net/t3do8rjs

Сейчас окно закрывается при клике по самому окну, а нужно что бы закрывалось только при клике по надписи "закрыть"
  • Вопрос задан
  • 19044 просмотра
Решения вопроса 1
@TroubleInThat
Разработка прикладного ПО
если сильно хочется то можно....
не совсем честно - но работает
= err -ref -->> например так : https://jsfiddle.net/t3do8rjs/

Извините..., не смог получить правильную ссылку
поправьте скрипт
-----------------------
$('.popUp').click(function(){
if (this.offsetWidth - event.offsetX < 0) {
$('.popUp').addClass('close');
}
});

нашел. пример здесь :
https://jsfiddle.net/t3do8rjs/1/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.
Нельзя. :after/:before не относятся к DOM дереву, поэтому браузер не может определить события, относящиеся к ним.
Решение TroubleInThat имеет место быть, но это костыль и не стоит того. Лучше и правильнее сделать отдельный div/span для нужного блока.
Ответ написан
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Без понятия, это ли имел в виду TroubleInThat, но можно сделать так, конкретно для вашего примера:

$('.popUp').click(function(e){
 if(
   e.clientX > $(this).offset().left + $(this).outerWidth() 
   //Ваш :after находится за пределами .popUp.
   //При клике смотрим текущие координаты мыши 
   //Если она за пределами .popUp, то следовательно - клик произошел по псевдоэлементу
 ){
   $('.popUp').addClass('close');
 }
});


Но вообще, это костыль и гораздо правильнее использовать обычные элементы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы