CSS伪元素上的事件侦听器,例如::after和::before
Event listener on a CSS pseudo-element, such as ::after and ::before?
我有一个div
元素,其中一个CSS伪元素::before
用作关闭按钮(而不是使用实际按钮)。如何将事件侦听器仅应用于伪元素?
HTML
<div id="box"></div>
CSS
#box:before
{
background-image: url(close.png);
content: '';
display: block;
height: 20px;
position: absolute;
top: -10px;
right: -10px;
width: 20px;
}
#box
{
height: 100px;
width: 100px;
}
正在寻找解决方案并找到了这个线程。现在想分享我的解决方法:
CSS
element { pointer-events: none; }
element::after { pointer-events: all; }
JS
element.addEventListener('click', function() { ... });
如果您在element
上不需要任何指针事件,则此操作有效。检查它的作用。
否。DOM中不存在伪元素,因此它没有代表它的HTMLElementNode
对象。
(我还没有测试过)
样式:
#mything {
width: 100px;
height: 100px;
position: relative;
background: blue;
}
#mything:after {
content: "x";
font-size: 10px;
position: absolute;
top: 0;
right: 0;
background: red;
width: 10px;
height: 10px;
}
javascript:
$('#mything').click(function(e) {
if (e.clientX > $(this).offset().left + 90 &&
e.clientY < $(this).offset().top + 10) {
// do something
}
});
html:
<div id="mything">Foo</div>
如果生成内容的位置和维度已知,则可以在元素本身上添加一个点击处理程序,并在处理之前检查鼠标的相对位置。
这是反常的,但也是可能的。
一般来说,别人说不但如果您的带有伪元素的标签为空,例如引导程序中的glyphicon。
您可以包装div
或span
或任何适合您的标签。引导程序中的Glyphicons使用:before
,但在页面上您可以看到它捕获了hover
事件。
示例:
<span>
<span class="glyphicon glyphicon-asterisk" aria-hidden="true"></span>
</span>
假设您想将事件添加到上面的字形图标中,您可以使用jquery父选择器
$('glyphicon').parent('span').click(function() {
// awesome things
});
这只是一个小技巧,以防您的标签为空。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- missing ) after argument list DATEDIF
- 在三个.js中创建球体(例如地球)的磁力线
- 任何将(SSH)终端嵌入到一些HTML5表示系统中的想法(例如,show.js)
- 将javascript应用程序迁移到使用AMD的提示(例如requirejs)
- SlideDown()不会'不能在jQuery中使用After()
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- setTimeOut AFTER jQuery表单提交
- 在使用javascript的输入字段中,只接受20的倍数(例如40,60,80)
- 插入后单击锚点标记上的事件after不起作用
- jQuery双对象构造函数-例如$($(this))
- 如何使用浏览器中用酶创建的组件反应例如摩卡
- 在Node.js中,我在哪里可以看到JavaScript方法的源代码,例如hasOwnProperty
- 仅将JavaScript应用于部分代码(例如菜单)
- 监视JavaScript输出,例如console.log()
- 在javascript中修改pseudo-select:after
- 如何在特定时间重新加载page.php,例如:07:45.非持续时间,例如:每5秒
- 反向名称的JavaScript函数不能正确工作(例如学习JavaScript-O'Reilly)
- 来自jQuery,如何在React.js中制作DOM动画?例如设置进度条的动画
- CSS伪元素上的事件侦听器,例如::after和::before