[英]Trying to implement pointer-events: none in JavaScript
I have a select dropdown to which I am trying to remove the down arrow using a dummy mask element.我有一个选择下拉列表,我试图使用虚拟掩码元素删除向下箭头。 But when I click that mask element, the select dropdown is not triggering.但是当我单击该掩码元素时,不会触发选择下拉列表。
If I give pointer-events: none
to .slct-drpdwn
, everything works fine but sadly this isn't supported in IE9.如果我给pointer-events: none
给.slct-drpdwn
,一切正常,但遗憾的是 IE9 不支持。 So, I thought to implement css pointer-events: none
like behavior using JavaScript.所以,我想实现 css pointer-events: none
like 使用 JavaScript 的行为。
Here is the JavaScript code which isn't doing anything:这是没有做任何事情的 JavaScript 代码:
var select = document.querySelector('.slct-drpdwn');
select.onclick = function (e) {
var e = e || window.event;
console.log("in");
if (!e.preventDefault) { //IE quirks
e.returnValue = false;
e.cancelBubble = true;
}
e.preventDefault();
e.stopPropagation();
}
Try this if you don't want to use overflow:hidden;
如果你不想使用overflow:hidden;
试试这个overflow:hidden;
: http://jsfiddle.net/MadalinaTn/1c7hqddy/1/ : http : //jsfiddle.net/MadalinaTn/1c7hqddy/1/
.slct {
position:relative;
display:block;
border:solid black 1px;
float:left;
overflow: hidden;
}
div select {
z-index:1;
background: transparent;
border:0;
width: 200px;
appearance:none;
-moz-appearance:none; /* Firefox */
-webkit-appearance:none; /* Safari and Chrome */
}
.slct .slct-drpdwn {
display:block;
position:absolute;
right:0;
top:0;
height:1em;
width:1em;
margin:2px;
background:red;
z-index: -1;
}
Try with jQuery:尝试使用 jQuery:
http://jsfiddle.net/MadalinaTn/5cbobco5/3/ http://jsfiddle.net/MadalinaTn/5cbobco5/3/
$('.slct-drpdwn').click(function() {
var e = document.createEvent('MouseEvents');
e.initMouseEvent('mousedown');
$('select')[0].dispatchEvent(e);
});
IE9 recognizes pointer events: none, but only for SVG elements. IE9 识别指针事件:无,但仅适用于 SVG 元素。 Try this:尝试这个:
<div class="slct">
<select>
<option>Foobar</option>
<option>Bar</option>
<option>Foo</option>
<option>Baz</option>
</select>
<svg class="slct-drpdwn" id="slct-drpdwn"></svg>
</div>
#slct-drpdwn{
pointer-events: none;
}
http://jsfiddle.net/MadalinaTn/u8oea7nt/2/ http://jsfiddle.net/MadalinaTn/u8oea7nt/2/
You can resolve this in css, without js:您可以在 css 中解决此问题,无需 js:
.slct {
position:relative;
display:block;
border:solid black 1px;
float:left;
overflow: hidden;
}
div select {
z-index:1;
width:125%;
background: transparent;
border:0;
}
.slct .slct-drpdwn {
display:block;
position:absolute;
right:0;
top:0;
height:1em;
width:1em;
margin:2px;
background:red;
z-index: -1;
}
http://jsfiddle.net/MadalinaTn/fj53g8k9/1/ http://jsfiddle.net/MadalinaTn/fj53g8k9/1/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.