Я хочу скрыть div #startMnu
, когда пользователь щелкает из div с именем .startBtn
. Я не могу заставить это работать, используя этот учебник https://jsfiddle.net/KyleMit/tHCUB/, везде, где я нажимаю, он говорит, что он находится вне коробки.Onclick вне div, скрыть div
$(".startBtn").click(function() {
$(".startBtn").fadeToggle(200);
$("#startMnu").toggle(200);
});
$("body").clickOff(function() {
alert('clickOff');
});
Эти последние строки кода являются единственными, которые изменились с javascript-части в jsfiddle.
Я пытаюсь создать меню, в котором вы можете нажать кнопку меню, чтобы открыть его, и закройте его, нажав кнопку еще раз, или щелкнув мышью на div. Прямо сейчас предупреждение появляется везде, где я нажимаю. Идеи?
Edit:
//Effects.js
$(function() {
$(".startBtn").click(function() {
$(".startBtn").fadeToggle(200);
$("#startMnu").toggle(200);
});
});
$.fn.clickOff = function(callback, selfDestroy) {
var clicked = false;
var parent = this;
var destroy = selfDestroy || true;
parent.click(function() {
clicked = true;
});
$(document).click(function(event) {
if (!clicked) {
callback(parent, event);
}
if (destroy) {
//parent.clickOff = function() {};
//parent.off("click");
//$(document).off("click");
//parent.off("clickOff");
};
clicked = false;
});
};
$(".startBtn").click(function(event) {
event.stopPropagation();
$("#startMnu").toggle();
});
$("body").click(function() {
$("#startMnu").hide();
});
/* effects.css */
#startBtn {
position: absolute;
transition: all ease 200ms;
}
#startBtn:hover {
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
#startBtnHvr {
display: none;
position: absolute;
transition: all ease 0ms;
}
.startBtn {
width: 64px;
height: 64px;
}
/* style.css */
body {
background-image: url("background.png") no-repeat center center fixed;
overflow: hidden;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Tahoma, Geneva, sans-serif;
color: #333;
}
#startMnu {
display: none;
padding: 280px 180px;
background: linear-gradient(to bottom right, rgba(86, 11, 3, .8), rgba(4, 74, 100, .8));
/* Standard syntax */
float: left;
position: absolute;
border-radius: 1px;
border: 2px solid #333;
margin-left: -8px;
margin-top: 100px;
}
<!DOCTYPE HTML>
<html>
<head>
<title>Online OS</title>
<link rel="icon" type="image/png" href="ico_default.png">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"></script>
<script type="text/javascript" src="effects.js"></script>
<link href="effects.css" rel="stylesheet" type="text/css" id="sheet1">
<link href="style.css" rel="stylesheet" type="text/css" id="sheet1">
</head>
<body>
<img id="startBtn" class="startBtn" src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Circle_-_black_simple.svg/2000px-Circle_-_black_simple.svg.png" alt="" />
<img id="startBtnHvr" class="startBtn" src="http://cdnl.accucutcraft.com/media/catalog/product/cache/2/image/9df78eab33525d08d6e5fb8d27136e95/C/R/CR210.jpg" alt="" />
<div id="startMnu">
<h2 style=" float:left; position:absolute; margin-left:-95px; margin-top:-270px;" class="rename">Popup<h2>
</div>
</body>
</html>
Это то, что я имею в виду, незначительные ошибки, но во фрагменте кода.
попробовать это '$ ("startBtn.") Нажмите (функция() { . \t $ (". StartBtn"). FadeToggle (200); \t $ ("# startMnu") .переключатель (200); }); $ (": not (.startBtn)"). Click (function() { \t alert ('clickOff'); }); ' – guradio
Если вы хотите спрятать, вы можете просто сделать' $ ("# startMnu") .hide(); ' – SiddP
$ (" body "). clickOff (используйте идентификатор div вместо тела – Poria