我正在尝试创建一个简单的错误消息,该消息应该在页面点击时消失。
这是我的Jsfiddle:http://jsfiddle.net/ZKgWR/1/
我希望在信息可见时,在页面上点击时隐藏.super消息。
这是我的jquery:
// show super on click
$('.error').click(function(e) {
e.preventDefault();
var position = $(this).position();
$('.super').css({
display: 'block',
position: 'absolute',
left: position.left + 50,
top: position.top
});
var super = true
});
// If .error clicked then enable the function to remove the super message
if ($('.error').show()) {
$(document).click(function() {
$('.super').hide();
});
}
// If .error clicked then enable the function to remove the super message
if ($('.error').show()) {
$(document).click(function() {
$('.super').hide();
});
}
问题是这部分代码无效:
if ($('.error').show()) {
$(document).click(function() {
$('.super').hide();
});
}
单击.error时没有任何附加内容,因为当.super不可见时,该功能也处于活动状态。
答案 0 :(得分:0)
为什么不添加一个名为active或visible的类?
$('.error').click(function (e) {
e.preventDefault();
var position = $(this).position();
$('.super')
.show()
.css({display: 'block', position: 'absolute', left: position.left + 50, top: position.top})
.addClass("active");
});
$(document).click(function() {
if($('.super').hasClass("active"))
$('.super').removeClass("active").hide();
});
你的错误出现在if语句中,在进行任何检查之前必须先发生第一次事件......
修改强>
看着你的小提琴我意识到我犯了错误,应该是e.stopPropogation,这是一个完整的代码:
$(document).click(function(e) {
if($('.super').hasClass("active"))
$('.super').hide();
});
$('.error').click(function(e) {
e.stopPropagation();
var position = $(this).position();
$('.super').fadeIn(250).css({
display: 'block',
position: 'absolute',
left: position.left + 50,
top: position.top
}).addClass("active");
});