簡體   English   中英

jQuery如何單擊觸發函數?

[英]Jquery how to trigger function if clicked?

我正在嘗試創建一個簡單的錯誤消息,該錯誤消息應在點擊頁面時消失。

這是我的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時,該功能也處於活動狀態。

為什么不添加一個稱為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語句中,必須執行一個事件才能進行任何檢查...

編輯:

看着您的js小提琴,我意識到我犯的錯誤,應該是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");
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM