首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用.is()目标在画布上点击

使用.is()目标在画布上点击
EN

Stack Overflow用户
提问于 2018-01-08 14:20:00
回答 1查看 42关注 0票数 0

我正在创建一个画布外导航,它以三个条件关闭:

  1. 用户切换导航按钮。
  2. 用户单击导航内的链接。
  3. 当导航器打开时,用户单击除导航之外的任何位置。

我有前两个条件,但没有第三个条件。下面是我的密码。我试图完成的实质是:检查主体上的单击,如果该单击是(在本例中) .pageContainer,则运行第二次检查,以查看nav是否具有"showMenu“类,并且标志是否为== true

代码语言:javascript
复制
$(document).ready(function() {
	
	var button = $('.button');
	var ocn = $('.ocn');
	var test = $('.test');
	var flag = false;
	
	//toggle menu using just the button
	 button.click(function() {
		 if ( flag == false ) {
			 ocn.addClass('showMenu');
			 flag = true;
		 } else {
			 ocn.removeClass('showMenu');
			 flag = false;
		 }
	 });
	
	//close the menu clicking on a link
	test.click(function() {
		ocn.removeClass('showMenu');
		flag = false;
	});
	
	//close menu when click off canvas
	
  /*
  $('body').on('click', '.pageContainer', function(e) {
		
		if( ocn.hasClass('showMenu') && flag == true) {
			ocn.removeClass('showMenu');
			flag = false;
		}
		
	}); 
	*/
	
	
	
	
});
代码语言:javascript
复制
* {
	padding: 0;
	margin: 0;
}

.ocn {
	position: absolute;
	left: -300px;
	top: 0;
	width: 300px;
	height: 100vh;
	background-color: #ccc;
	transition: left .2s ease;
	z-index: 2;
	border: 1px solid;
}

.showMenu {
	left: 0px;
}

.pageContainer {
	height: 500px;
	width: 1000px;
	border: 1px solid;
	display: block;
	margin: 0 auto;
}

.button {
	height: 40px;
	width: 40px;
	border: 1px dashed;
	display: block;
	position: relative;
	left: 400px;
	cursor: pointer;
}

.test {
	cursor: pointer;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ocn">
	<p class="test">here is some text for the menu</p>
</div>
<div class="pageContainer">
	<div class="button"></div>
</div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-08 14:30:03

您可以使用e.target属性来比较单击的内容。与此类似:

代码语言:javascript
复制
if(e.target == pageContainer[0])

现在,您可以在单击.pageContainer时应用所需的逻辑。

代码语言:javascript
复制
$(document).ready(function() {
  var pageContainer = $('.pageContainer');
  var button = $('.button');
  var ocn = $('.ocn');
  var test = $('.test');
  var flag = false;

  //toggle menu using just the button
  button.click(function() {
    if (flag == false) {
      ocn.addClass('showMenu');
      flag = true;
    } else {
      ocn.removeClass('showMenu');
      flag = false;
    }
  });

  //close the menu clicking on a link
  test.click(function() {
    ocn.removeClass('showMenu');
    flag = false;
  });

  //close menu when click off canvas
  $('body').on('click', '.pageContainer', function(e) {
    if (e.target == pageContainer[0]) {
      //console.log('pageContainer was clicked')
      if (ocn.hasClass('showMenu') && flag == true) {
        ocn.removeClass('showMenu');
        flag = false;
      }
    };
  });





});
代码语言:javascript
复制
* {
  padding: 0;
  margin: 0;
}

.ocn {
  position: absolute;
  left: -300px;
  top: 0;
  width: 300px;
  height: 100vh;
  background-color: #ccc;
  transition: left .2s ease;
  z-index: 2;
  border: 1px solid;
}

.showMenu {
  left: 0px;
}

.pageContainer {
  height: 500px;
  width: 1000px;
  border: 1px solid;
  display: block;
  margin: 0 auto;
}

.button {
  height: 40px;
  width: 40px;
  border: 1px dashed;
  display: block;
  position: relative;
  left: 400px;
  cursor: pointer;
}

.test {
  cursor: pointer;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ocn">
  <p class="test">here is some text for the menu</p>
</div>
<div class="pageContainer">
  <div class="button"></div>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48152205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档