我对jQuery完全陌生。 我想做的是过滤掉某些事件,使其不进入DIV。
我的页面中有关注
:
叠加层具有以下风格
majority_points
我有以下代码
[[[1 3]
[2 2]
[2 4]]
[[3 2]
[2 2]
[2 4]]
[[2 4]
[3 5]
[4 4]]
[[5 2]
[3 2]
[4 1]]
[[5 3]
[4 4]
[5 2]]]
实时示例:
<div id="overlay"></div>
<div id="GameDiv" style="width:1280px; height: 720px;"></div>
<style>
#overlay {
position: fixed; /* Sit on top of the page content */
display: block; /* Hidden by default */
width: 100%; /* Full width (cover the whole page) */
height: 100%; /* Full height (cover the whole page) */
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(1,0,0,0.5); /* Black background with opacity */
z-index: 200; /* Specify a stack order in case you're using a different order for other elements */
pointer-events: auto
}
</style>
$(document).on(
{
mousedown:mouseEvent,
mouseup:mouseEvent,
});
$("GameDiv").on(
{
mousedown:divEvent,
mouseup:divEvent,
});
function divEvent(e)
{
console.log("div event"+e);
}
function mouseEvent(e)
{
console.log("doc event" + e);
var evnt = jQuery.Event(e.type,e);
$("GameDiv").trigger(evnt)
}
我收到文档鼠标事件。 但是我没有收到第二个div事件。
我做错了什么?
有更好的方法吗?
答案 0 :(得分:2)
在这里,您犯了两个错误。
您已应用鼠标事件的div上的叠加层。
您应使用主题标签#
来按ID属性进行选择,
同样,在按类属性选择时也必须使用点.
。
$(document).on({
mousedown: mouseEvent,
mouseup: mouseEvent,
});
$("#GameDiv").on({
mousedown: divEvent,
mouseup: divEvent,
});
function divEvent(e) {
console.log("div event" + e);
}
function mouseEvent(e) {
console.log("doc event" + e);
//var evnt = jQuery.Event(e.type, e);
//$("#GameDiv").trigger(evnt);
}
#overlay { position: fixed; /* Sit on top of the page content */ display: block; /* Hidden by default */ width: 100%; /* Full width (cover the whole page) */ height: 100%; /* Full height (cover the whole page) */ top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(1, 0, 0, 0.5); /* Black background with opacity */ z-index: 200; /* Specify a stack order in case you're using a different order for other elements */ pointer-events: auto}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- div class="overlay"></div comented just to illustrate-->
<div id="GameDiv" style="width:1280px; height: 720px;"></div>
答案 1 :(得分:1)
因为您应该使用正确的选择器:“#GameDiv”而不是js中的“ GameDiv”。
答案 2 :(得分:1)
要获取这两个事件,可以按照下面的代码片段进行操作。
$(document).on(
{
mousedown: mouseEvent,
mouseup: mouseEvent,
});
$("#GameDiv").on("click", divEvent);
function divEvent(e) {
console.log("div event" + e);
}
function mouseEvent(e) {
console.log("doc event" + e);
var evnt = jQuery.Event(e.type, e);
$("GameDiv").trigger(evnt)
}
#overlay {
display: block; /* Hidden by default */
width: 100%; /* Full width (cover the whole page) */
height: 100%; /* Full height (cover the whole page) */
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(1,0,0,0.5); /* Black background with opacity */
z-index: 200; /* Specify a stack order in case you're using a different order for other elements */
pointer-events: auto
}
<div id="overlay"></div>
<div id="GameDiv" style="width:1280px; height: 720px;"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
如果您确实需要处理mousedown
和mouseup
事件,则可以遵循以下代码段。
#overlay {
display: block; /* Hidden by default */
width: 100%; /* Full width (cover the whole page) */
height: 100%; /* Full height (cover the whole page) */
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(1,0,0,0.5); /* Black background with opacity */
z-index: 200; /* Specify a stack order in case you're using a different order for other elements */
pointer-events: auto
}
<div id="overlay"></div>
<div id="GameDiv" style="width:1280px; height: 720px;"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).on(
{
mousedown: mouseEvent,
mouseup: mouseEvent,
});
$("#GameDiv").on("mousedown", divEvent);
$("#GameDiv").on("mouseup", divEvent);
function divEvent(e) {
console.log("div event" + e);
}
function mouseEvent(e) {
console.log("doc event" + e);
var evnt = jQuery.Event(e.type, e);
$("GameDiv").trigger(evnt)
}
</script>
另一种解决方案
请参考下面的代码片段以同时调用两个事件
#overlay {
display: block; /* Hidden by default */
width: 100%; /* Full width (cover the whole page) */
height: 100%; /* Full height (cover the whole page) */
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(1,0,0,0.5); /* Black background with opacity */
z-index: 200; /* Specify a stack order in case you're using a different order for other elements */
pointer-events: auto
<div id="overlay"></div>
<div id="GameDiv" style="width:1280px; height: 720px;"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).on(
{
mousedown: mouseEvent,
mouseup: mouseEvent,
});
$("#GameDiv").on({
"mousedown": divEvent,
"mouseup": divEvent
});
function divEvent(e) {
console.log("div event" + e);
}
function mouseEvent(e) {
console.log("doc event" + e);
var evnt = jQuery.Event(e.type, e);
$("GameDiv").trigger(evnt)
}
</script>