我有一个jQuery函数,当单击一个元素时,隐藏的div显示。
$('.openHide').click(function(){
$(this).next('.hiddenContent').toggle();
});
我需要修改它,如果我不仅仅点击第一个元素,我可以关闭这个div。可能在模糊,但我不知道如何表明元素......
$('.hiddenContent').blur(function() {
$('.hiddenContent').parent().children('.hiddenContent').hide();
});
这是我的HTML:
<span class="openHide">text here</span>
<div style="display:none" class="hiddenContent">
hidden content here
</div>
答案 0 :(得分:25)
单击跨度时,事件不应传播到正文
$(document).ready(function() {
$('.openHide').click(function(e) {
$('.hiddenContent').toggle();
e.stopPropagation();
});
$(document.body).click(function() {
$('.hiddenContent').hide();
});
$('.hiddenContent').click(function(e) {
e.stopPropagation();
});
});
答案 1 :(得分:3)
如果.hiddenContent
是div,则无法使用模糊,仅适用于文本输入。 mouseout
可能是另一种选择,$(this)
是我认为您在这种情况下正在寻找的内容:
$('.hiddenContent').mouseout(function() {
$(this).hide();
});
如果您想在元素外部点击时隐藏div,则必须注意页面正文中的点击次数:
$('body').click(function() {
// Hide all hidden content
$('.hiddenContent').hide();
});
然后提供和例外,当您点击实际隐藏的内容时,以及何时打开它:
$('.hiddenContent').click(function(e) { e.stopPropagation() });
$('.openHide').click(function(e) {
$(this).next('.hiddenContent').toggle();
// this stops the event from then being caught by the body click binding
e.stopPropagation();
});