在纯javascript中隐藏div onclick
我想知道如何在纯javascript中隐藏在纯javascript中隐藏div onclick,javascript,html,Javascript,Html,我想知道如何在纯javascript中隐藏divonclick,而不使用getElementById之类的东西 这样做的目的是在div的数量未知时进行扩展和工作 以下是仅隐藏第一个div的当前模式: document.getElementById('msg0').addEventListener('click',function(e){ document.getElementById('msg0').style.display = 'none'; }); 下面是示例div: <d
div
onclick
,而不使用getElementById
之类的东西
这样做的目的是在div
的数量未知时进行扩展和工作
以下是仅隐藏第一个div
的当前模式:
document.getElementById('msg0').addEventListener('click',function(e){
document.getElementById('msg0').style.display = 'none';
});
下面是示例div
:
<div class="alert alert-info" id="msg0">
<button data-dismiss="alert" class="close">
×
</button>
<i class="fa fa-check-circle"></i>
Three credits remain in your account.
</div>
<div class="alert alert-success" id="msg1">
<button data-dismiss="alert" class="close">
×
</button>
<i class="fa fa-check-circle"></i>
Profile details updated.
</div>
<div class="alert alert-warning" id="msg2">
<button data-dismiss="alert" class="close">
×
</button>
<i class="fa fa-check-circle"></i>
Your account expires in three days.
</div>
<div class="alert alert-danger" id="msg3">
<button data-dismiss="alert" class="close">
×
</button>
<i class="fa fa-check-circle"></i>
Document deleted.
</div>
&时代;
你的帐户上还有三个信用卡。
&时代;
配置文件详细信息已更新。
&时代;
你的帐户三天后到期。
&时代;
文件已删除。
首先,您需要为所有需要实现相同功能的div元素添加一个公共类。例如,让我们将该类命名为“Hiddeble”:
/// Html
<div class='hideable'></div>
// Javascript
var elements = document.getElementsByClassName('hideable');
for(var i=0; i<elements.length; i++)
{
var element = elements[i];
element.addEventListener('click', onClick);
}
function onClick(event){
event.target.style.display = 'none';
}
///Html
//Javascript
var elements=document.getElementsByClassName('hidable');
对于(var i=0;i首先,您需要为需要实现相同功能的所有div元素添加一个公共类。例如,让我们将该类命名为“hidable”:
/// Html
<div class='hideable'></div>
// Javascript
var elements = document.getElementsByClassName('hideable');
for(var i=0; i<elements.length; i++)
{
var element = elements[i];
element.addEventListener('click', onClick);
}
function onClick(event){
event.target.style.display = 'none';
}
///Html
//Javascript
var elements=document.getElementsByClassName('hidable');
对于(var i=0;i这样的东西就足够了。这将只隐藏单击的div。如果您提出请求,我将解释这是如何工作的
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("div").click(function(){
$(this).hide();
});
});
</script>
<div>
one
</div>
<div>
two
</div>
$(文档).ready(函数(){
$(“div”)。单击(函数(){
$(this.hide();
});
});
一
二
这样就足够了。这将只隐藏单击的div。如果您提出请求,我将解释这是如何工作的
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("div").click(function(){
$(this).hide();
});
});
</script>
<div>
one
</div>
<div>
two
</div>
$(文档).ready(函数(){
$(“div”)。单击(函数(){
$(this.hide();
});
});
一
二
使用事件委派。只设置一次单击处理程序,并与动态添加的警报一起使用
document.addEventListener('click', function (event) {
var alertElement = findUpTag(event.target, '.alert');
if (alertElement) {
alertElement.style.display = 'none';
}
});
function findUpTag(el, selector) {
if (el.matches(selector)) {
return el;
}
while (el.parentNode) {
el = el.parentNode;
if (el.matches && el.matches(selector)) {
return el;
}
}
return null;
}
演示:使用事件委派。只设置一次单击处理程序,并可与动态添加的警报一起使用
document.addEventListener('click', function (event) {
var alertElement = findUpTag(event.target, '.alert');
if (alertElement) {
alertElement.style.display = 'none';
}
});
function findUpTag(el, selector) {
if (el.matches(selector)) {
return el;
}
while (el.parentNode) {
el = el.parentNode;
if (el.matches && el.matches(selector)) {
return el;
}
}
return null;
}
演示:getElementsByClassName
或queryselectoral
?document.queryselectoral?为什么不使用document.getElementById
?getElementsByClassName
或queryselectoral
?document.queryselectoral?为什么不使用document.getElementById
?它似乎它们已经有了一个通用的警报类。document.querySelectorAll('.alert')
比document.getElementsByClassName('alert')得到更广泛的支持
。此外,onClick函数可以是this.style.display='none'
。我认为他只希望被单击的div被隐藏,而不是共享同一类的所有div在单击一个div时一次被隐藏。@RobG queryselectoral在IE 8中有部分支持,而getElementsByClassName没有任何支持IE 8中的rt。这是唯一的区别。只需添加querySelectorAll
将返回一个非活动节点元素列表。@frosty您是对的,这是他想要的行为,这正是此代码实现的行为。看起来他们已经有了一个通用的警报类。document.querySelectorAll('.alert'))
比document.getElementsByCassName('alert')得到更广泛的支持
。此外,onClick函数可以是this.style.display='none'
。我认为他只希望被单击的div被隐藏,而不是共享同一类的所有div在单击一个div时一次被隐藏。@RobG queryselectoral在IE 8中有部分支持,而getElementsByClassName没有任何支持IE 8中的rt。这是唯一的区别。只需添加querySelectorAll
将返回一个非活动节点元素列表。@frosty你是对的,这是他想要的行为,这正是这段代码实现的行为。问题是针对普通Javascript,而不是jquery。我相信OP要求的是纯Javascript,而不是Jquery.我理解..但是OP要求使用“纯JavaScript”,这意味着他要么不感兴趣,要么已经知道如何在Jquery中实现这一点。我认为“纯JavaScript”的公认定义是不使用jQuery这样的框架的javascript。例如,如果查看JSFIDLE并展开library下拉列表,您将看到一个值为“No library(pure JS)”的项@BenGuest啊。那是我的错误。问题是纯Javascript,而不是jquery。我相信OP要求纯Javascript,而不是jquery。我理解。但是OP要求的是“纯Javascript”,意思是他要么不感兴趣,要么已经知道如何在jquery中做到这一点。我认为“纯Javascript”的公认定义是不使用jQuery这样的框架的javascript。例如,如果您查看JSFIDLE并展开library下拉列表,您将看到一个值为“No library(pure JS)”@BenGuest Ah的项。那么我的错误是什么呢。