- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
[最终编辑:我觉得有必要做出回应,因为我从这篇文章中学到了很多东西(主要是通过你们,我花了更多的时间来理解CSS..但最后,我真的不知道如何为了使这项工作有效..除了真正破坏html的基本结构..我不想这样做。但我做到了...(无论出于何种原因 #parent>* { color: black } 当我单击子项)..
这就是我所做的,但如果你现在知道我想做什么..请看看你是否可以用真实的答案纠正我,因为我觉得这不可能是黑客让它继续下去的原因。
CSS
.red {
color: red;
}
div[id*="child"] {
color: black;
}
div [id*="alterChild"]{
color: green;
JS
;(function(){
let parentId = document.getElementById('parent');
parentId.addEventListener('click', function(e){
if (e.target.id === 'parent') {
e.target.className = "red";
} else {
e.target.setAttribute("id", "alterChild");
}
},false);
})(
HTML
<div id="main">MAIN
<div id="parent">parent
<div id="child1">child1</div>
<div id="child2">child2</div>
<div id="child3">child3</div>
</div>
</div
__________最终编辑结束___________
所以我只想在单击父项时仅在父项上触发。下面的代码,它在父级及其所有子级上触发。我怎样才能防止这种情况发生?我尝试在之前和之后进行停止/预防,看看我是否有运气。
请指教。
<div id="main">MAIN
<div id="parent">parent
<div id="child1">child1</div>
<div id="child2">child2</div>
<div id="child3">child3</div>
</div>
</div>
;(function(){
let parentId = document.getElementById('parent');
parentId.addEventListener('click', function(e){
e.stopPropagation();
e.preventDefault();
e.target.className = "red";
e.stopPropagation();
e.preventDefault();
},false);
})()
最佳答案
- when click on parent, only parent should get class "red". (and not it's children).
这里的问题是您的 CSS 样式应用于子级。 CSS 代表级联样式表,其中“级联”意味着“适用于子级”
点击父级后,您最终会看到这个
.red {
color: red;
}
<div id="main">MAIN
<div id="parent" class="red">parent
<div id="child1">child1</div>
<div id="child2">child2</div>
<div id="child3">child3</div>
</div>
</div>
children 变成红色的事实与事件无关。 child 根据 parent 的 CSS 进行更改是正常的
如果您希望子级不继承父级的颜色,则需要显式设置其颜色
.red {
color: red;
}
#parent>* {
color: black;
}
/* these would also work
div[id^=child]
#child1, #child2, #child3
#parent>div
*/
<div id="main">MAIN
<div id="parent" class="red">parent
<div id="child1">child1</div>
<div id="child2">child2</div>
<div id="child3">child3</div>
</div>
</div>
示例:
;
(function() {
const parentId = document.getElementById('parent');
parentId.addEventListener('click', function(e) {
e.target.className = "red";
}, false);
})()
.red {
color: red;
}
#parent>* {
color: black;
}
<div id="main">MAIN
<div id="parent">parent
<div id="child1">child1</div>
<div id="child2">child2</div>
<div id="child3">child3</div>
</div>
</div>
- When any child is clicked, no parent should be red nor any other none clicked child
这是一个不同的问题。当您单击任何子项时,将触发事件监听器。 e.target
将是实际被单击的元素,因此如果您单击一个子元素,它将是该子元素
解决此问题的一种方法是检查目标是否为父级。
const parentId = document.getElementById('parent');
parentId.addEventListener('click', function(e) {
if (e.target === parentId) {
e.target.className = "red";
}
}, false);
关于javascript - 单击父级时如何不解雇其子级? (普通 JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55032297/
我的代码需要范围守卫,但是我是否必须手动 Dismiss() 从函数正常退出时所有范围守卫?即 void Deleter(MyClass* obj) { delete obj; } MyCla
当 UIPopoverController 被 UIPopoverController 本身的矩形之外的任何地方触摸解除时,是否有一个方法被调用? 状态: firstView 有一个 navBar。它
为调用实现 twilio,我尝试使用广播接收器而不是 twilio 逻辑的 Activity 。我的广播接收器应该通过 onReceive() 捕捉到 Intent ,但实际上并没有。听到了呼唤!但无
在我的应用程序中,我希望在多个 View 中显示 alertview。所以我所做的只是在实用程序类中编写了一个 alertview 并在任何地方使用它。这工作正常。 我什至尝试设置 但徒劳无功。 实用
我想使用具有以下行为/功能的 PopupWindow: 它是可聚焦的(在内部有交互式控件,例如按钮) 弹出窗口“下”的 View 必须正确使用弹出窗口外的触摸 .. 但弹出窗口必须保留在屏幕上,即使在
我正在为 tvOS 开发应用程序,但在取消 UIAlertController 时遇到问题。我在普通 UIViewController 之上呈现一个 UIAlertController。当我按下电视
我有一个 Controller A,还有一个 UIButton,单击它我将呈现一个新的 Controller B。但问题是 Controller B 首先嵌入了 NAV。所以最终我将介绍 UINavi
当我单击从 Web 服务打开所单击项目的数据的列表项时,我想打开一个 ProgressDialog。ProgressDialog 需要出现,直到被点击项目的 WebContent 被打开。 我知道使用
任何人都可以帮助我防止 alertview 在其按钮单击事件中被解雇吗?? 我有一个 textview 作为我的 alertView 的 subview ,如果 textview 的值为 nil,我不
这是按钮操作: @IBAction func readyPressed(sender: NSButton) { self.dismissController(Hardness)
我正在尝试防止当用户点击弹出窗口外部时弹出窗口被关闭。我似乎对此有其他问题/答案,他们似乎都建议使用 modalInPopover 作为 View 。正如我所看到的那样,我已经在 viewDidApp
我正在将 SFSafariViewController 推送到 UITabBarController 中。但单击 Safari 完成按钮会关闭 UITabBarController。如何预防? 最佳答
我有 2 个 viewcontroller,第一个 VC 包含 backButton。 firstVC.h @protocol DVDelegate -(void)DVViewControllerD
这是我的设置: 导航 Controller :ViewcontrollerA -> ViewControllerB ViewcontrollerB 显示一个 imagePickerController
我使用 ProgressDialog 向用户显示他必须等待,并在用户必须等待时使我的应用程序表面“不可触摸”。我向 progressDialog 添加了一个按钮,如果某些条件为真,它应该开始一些操作。
我目前正在尝试实现移动和导出模式的功能。我所做的就是让用户导航到他们想要将文件移动/导出到的目录,然后在他们选择的目录上调用 dismissGrantingAccessToURL,并附加原始文件的文件
我是一名优秀的程序员,十分优秀!