仅检测伪元素上的单击事件。我的代码是:p {
position: relative;
background-color: blue;}p:before {
content: '';
position: absolute;
left:100%;
width: 10px;
height: 100%;
background-color: red;}请看这把小提琴:http://jsfiddle.net/ZWw3Z/5/我只想在伪元素(红色位)上触发单击事件。也就是说,我不希望在蓝色位上触发单击事件。
3 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
span
<p>
p span
p:before
慕哥9229398
TA贡献1877条经验 获得超6个赞
事实上,这是可能的。您可以检查单击的位置是否在元素之外,因为只有在以下情况下才会发生这种情况:::before或::after被点击了。
此示例只检查右边的元素,但在您的情况下应该有效。
span = document.querySelector('span');
span.addEventListener('click', function (e) {
if (e.offsetX > span.offsetWidth) {
span.className = 'c2';
} else {
span.className = 'c1';
}
});
div { margin: 20px; }
span:after { content: 'AFTER'; position: absolute; }
span.c1 { background: yellow; }
span.c2:after { background: yellow; }
<div><span>ELEMENT</span></div>
添加回答
举报
0/150
提交
取消