2012-01-13 19 views
2

我在這裏有一個腳本,除了一個小細節外,它的功能非常棒。它基本上作爲單擊功能運行,在點擊某個鏈接時淡入淡出某些DIV。jQuery功能沒有按照我的計劃工作,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> 
+0

我不清楚你想要發生什麼。 – 2012-01-13 16:53:32

回答

3

$('*').click(...設置爲所有元素(*)點擊處理程序。你可以刪除這個功能。

+1

謝謝你!現在工作! – 2012-01-13 16:55:39

+0

很高興幫助。按下此答案旁邊的複選標記以將其選中爲正確。 – 2012-01-13 16:58:27

2

這就是這個代碼:

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

    e.stopPropagation(); 
}); 

它選擇文檔中所有的元素(包括htmlheadbody並附加一個單擊處理程序,就當你點擊該文件,它比較在id,這可能是空的,然後淡出顯示DIV。

Demo沒有該代碼。

+1

你是一名救生員。非常感謝。完美的作品。等不及要多學一點,所以我可以幫助人們在這裏! – 2012-01-13 16:54:33

1

不是真正的電子xpert 但這似乎是錯誤的部分

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

這是人,你是對的,看到你上面的答案。感謝您的回答 – 2012-01-13 16:55:18