由于父元素的顶部和位置,子元素单击不起作用
Child element click is not working due to top and position of parent element
我想在单击"关闭"子div时关闭父div。
<div class="siblings"/>
<div class="parent">
<div class="child" ng-click="handleClick()">Close</div>
<div>Content</div>
</div>
.parent {
position: relative;
top: 10px;
}
.child {
float: right;
}
.siblings {
position: fixed;
height: 66px;
}
我不能使用指针事件:在我的父母身上没有,因为它包含链接和其他可点击的数据。此外,我兄弟姐妹的身高与我孩子的身高重叠。
提前谢谢。
由于您使用的是JQuery:,所以我会这么做
$(".child").click(function(){
$(this).parent().slideToggle();
});
这是JSFiddle演示
我不能使用指针事件:在我的父级上没有,因为它包含链接和其他可点击的数据。
若在父级中使用pointer-events: none
,则子级div将不会收到点击事件。此外,pointer-events: none
将不允许任何点击,但也不会关闭父分区。
此外,我兄弟姐妹的身高与我孩子的身高重叠。
这是因为混合了position
风格。在一个地方使用position: relative;
,在另一个地方则使用position: fixed;
。如果您想这样做,请选择两者的父对象,其样式将控制这些div
之间的自然行为和结合。
当我点击"关闭"子div时,我想关闭父div。
<div class="parent" ng-if="!hideParent">
<div class="child" ng-click="hideParent = true">Close</div>
<div>Content</div>
</div>
您确定使用的是Angular吗?
然后尝试如下你可以使用ng if或ng show。
<div class="parent" ng-if="!obj.hideParent">
<div class="child" ng-click="obj.hideParent=true">Close</div>
<div>Content</div>
</div>
这里有两个原因是因为ng if不起作用。
- 一个是,如果我们没有在范围中声明它,这将不会反映出来
- 或者hideParent属性值可能是字符串。所以,如果它在字符串中,那么这将不会被认为是false或null
你可以用两种不同的方法来解决这个问题。
- 在控制器中,在视图中访问它之前,先在作用域变量中声明它,而不是动态变量
$scope.obj={hidePParent:null};
并在按钮/div上点击
- 在控制器中声明一个作用域函数并访问那里的变量
$scope.HideParent= function (obj){ if(!obj){ obj.hideParent=true; } else{ $scope.obj={hideParent:true}; } }
这里不要忘记将对象发送到函数。如果你发送属性,显然这不会反映在视图中。
相关文章:
- 对同一类中的所有元素单击一次
- 元素单击处理程序由一个神秘的函数取消设置
- 在处理元素单击事件期间,在循环内部调用window.open()
- JS-是否可以获得元素单击位置的确切宽度
- 使用 jQuery 创建动态元素 单击事件始终返回 for 循环中的最后一个索引
- 选中父元素单击上的复选框
- 在窗口和其他元素单击时隐藏
- Polymerjs 的自定义菜单元素单击事件
- 使用 javascript 函数查找元素单击的类
- 元素单击仅使用 javascript
- 等待文档鼠标按下完成,然后元素单击才能开始
- 由于父元素的顶部和位置,子元素单击不起作用
- Jquery-在共享相同类名的其他元素之间选择一个元素(单击时)
- 目标元素单击子元素,获取父属性
- 根据元素单击更改选择选项值
- 为listview上动态生成的元素单击event
- 扩展原生元素单击事件
- 可以被许多元素使用的Javascript函数,然后区分哪个元素单击了它
- 当元素单击时隐藏iframe
- 按钮元素单击事件以切换类不起作用