【发布时间】:2019-07-23 22:58:48
【问题描述】:
我想让整个 div 可点击,但子 div 除外。这个子 div 不是 div 的直接子级,而是更深一些。我想通过传递 div id 或类名来动态排除这个子 div。
我尝试使用 jQuery “.not()” 和 “.children()” 方法来解决它,这很有效。但在某种意义上它是静态的,我需要知道 div 在哪个级别,并且需要相应地对齐方法。但是,我想要一些动态的东西,它只需要 div 的类名或 id,并从 DOM 树中找到它并将它从新的 DOM 对象链中排除,以便可以应用 jQuery“.click”和“.hover”函数在除特定 div 之外的整个 div 上。
我为我的问题创建了一个虚拟示例。在示例中,我想将除“#d3”div 之外的整个 div(即 id = main1)设为超链接。
这是我的 JSFiddle:JSFiddle
示例代码:
HTML:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>
Untitled Document
</title>
</meta>
</head>
<body>
<div class="center border divmain1" id="main1">
<a href="https://www.google.ca" style="display: block">
link
</a>
<p>
Main
</p>
<div class="border-thin divd1" id="d1">
<p>
d1
</p>
</div>
<div class="border-thin divd2" id="d2">
<p>
d2
</p>
<div class="border-thin divd3" id="d3">
<p>
d3
</p>
<div class="border-thin divd4" id="d4">
d4
</div>
<div class="border-thin divd5" id="d5">
d5
</div>
</div>
</div>
</div>
</body>
</html>
CSS:
.border {
border: 5px solid RosyBrown;
}
.border-thin {
border: 2px solid RosyBrown;
}
.divmain1 {
width: 90%;
margin: 0 auto 0 auto;
overflow: hidden;
}
.divd1 {
width: 30%;
float: left;
}
.divd2 {
width: 60%;
float: right;
margin: 0 0 0 3.5%;
}
.divd3 {
margin: auto;
width: 90%;
}
.divd4 {
width: 30%;
}
.divd5 {
width: 30%;
}
jQuery:
// find elements
var main1 = $("#main1")
var d3 = $("#d3")
// handle click and hover pointer
main1.on("click", function(){
window.open('https://www.google.ca');
});
main1.hover(function(){
$(this).css("cursor", "pointer");
});
谁能帮助我了解如何使整个 div 可点击并动态排除子 div?
【问题讨论】:
标签: javascript jquery html css