簡體   English   中英

jQuery函數無法按我的計划工作,DIV僅在單擊時消失

[英]jQuery function is not working as i planned, DIVs just disappear on click

我這里有一個腳本,除了一個小細節外,它的工作原理令人驚訝。 它基本上是作為單擊功能運行的,在單擊鏈接時淡入和淡出某些DIV。

但是問題是,當您單擊頁面上的“任何位置”時,它將刪除DIV並保留空白的內容區域,直到您單擊其中一個鏈接。 顯然這是一個問題。

由於NDA的原因,我無法使用確切的代碼,但這是我在div中僅使用一些純文本的相同設置。

只需單擊鏈接以查看功能,然后單擊頁面上的其他任何位置(在div中,在空白處,無論如何),然后觀察div消失。 我知道這就是javascript正在調用的內容,但是我不知道如何在div中禁用點擊,因此不會發生。 此外,如何執行此操作,這樣也不會禁用該div中的鏈接。

任何幫助是極大的贊賞。 該網站可以挽救生命。

這是我從本網站上編輯下來的原始代碼,以顯示我的基本布局。 基本上是一連串的內聯鏈接,當單擊它們時,它們會將DIVS的一部分更改為div的另一部分:

<html>

<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    var gLastH = null;
    var gLastId = null;

    $('.toggle').click(function(e) {
        $('.toggleh:visible').fadeOut('slow');
        gLastId = $(this).attr('id');
        console.log('#' + gLastId + 'h');
        gLastH = $('#' + gLastId + 'h');
        $(gLastH).fadeIn('slow');
        e.stopPropagation();
    });

    $('*').click(function(e) {
        if ($(this).attr('id') != gLastId) {
            $(gLastH).fadeOut('slow');
        }

        e.stopPropagation();
    });
});
</script>

</head>

<body>
<div id="menubar">

    <a href="#" onclick="return false;" class="toggle" id="toggle1" style="display: inline;">
        text here</a>
    <a href="#" onclick="return false;" class="toggle" id="toggle2" style="display: inline;">
        text here</a>
    <a href="#" onclick="return false;" class="toggle" id="toggle3" style="display: inline;">
        text here</a>
    <a href="#" onclick="return false;" class="toggle" id="toggle4" style="display: inline;">
        text here</a>

    <div class="toggleh" id="toggle1h">
        some description in here I suppose
    </div>

    <div class="toggleh" id="toggle2h" style="display: none;">
        some description in here I suppose #2dsfds  sdfdsfa sdf 
    </div>

    <div class="toggleh" id="toggle3h" style="display: none;">
        some description in here I suppose #3dffdfasdfdsfdfasf
    </div>

    <div class="toggleh" id="toggle4h" style="display: none;">
        some description in here I suppose #4 dfdafa
    </div>
</div>

</body>

</html>

$('*').click(...為所有元素(*)設置點擊處理程序。您可以刪除此函數。

這就是這段代碼的作用:

$('*').click(function(e) {
    if (this.id != gLastId) {
        $(gLastH).fadeOut('slow');
    }

    e.stopPropagation();
});

它選擇了文檔中的所有元素(包括htmlheadbody並在其中附加了單擊處理程序。)單擊文檔時,它將比較id (可能為空),然后淡出顯示的div。

沒有該代碼的演示

不是真正的專家,但這似乎是有問題的部分

$('*').click(function(e) {...............}

暫無
暫無

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

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