簡體   English   中英

綁定時調用並循環JavaScript函數

[英]JavaScript function is called and looped while bind

Jsfiddle Demo for working version

Jsfiddle demo for failure version

情況很復雜。 我正在嘗試為移動設備創建一個畫布外導航側欄。 這個想法就像Facebook移動版和Google Plus移動版一樣。

現在工作進展到這里Jsfiddle Demo for working version (請注意,它僅在屏幕小於768px時顯示切換按鈕。它是按照這種方式設計的。)

對於下一步,我想允許用戶通過單擊暗陰影區域退出邊欄模式。 為此,我使用邊欄toggle function bindunbind RightHandSide_wrapper.click事件。

Jsfiddle demo for failure version

JavaScript的:

var toggle_offcanvas = function(){
    if(
        offcanvas_toggle.prop("checked") == false
    ){
        offcanvas_toggle.prop("checked", true);
         rhs_wrapper.css('cursor', 'pointer' ); 
        rhs_wrapper.css('background-color', 'gray' ); 
        rhs_wrapper.bind("click",toggle_offcanvas);   
        console.log("show slidebar");                
    }
    else 
        {
        offcanvas_toggle.prop('checked', false);
         rhs_wrapper.css('cursor', 'default' ); 
        rhs_wrapper.css('background-color', 'inherit' ); 
        rhs_wrapper.unbind("click",toggle_offcanvas); 
        console.log("hide slidebar");
    }
}
;


$(".offcanvas_button").bind("click",toggle_offcanvas);

這是問題所在。 添加rhs_wrapper.bind("click",toggle_offcanvas); ,每當我單擊切換按鈕時,它將運行toggle_offcanvas函數。 從控制台日志中可以看到,每次單擊切換按鈕都會返回兩個控制台輸出: show slidebarhide slidebar

看來我綁定它時已調用功能toggle_offcanvas

請幫忙。

解決方法如下:

http://jsfiddle.net/8XSJJ/

問題是您將單擊處理程序綁定到包含按鈕的div,這將兩次觸發該處理程序。 所以我加了另一層

<div class="graybg">
</div>

使用樣式使其透明:

.graybg {
    position:fixed;
    width:100%;
    height:100%;
    opacity:0.5;
    filter:alpha(opacity=50); /* For IE8 and earlier */
    background: black;
    cursor: pointer;
    z-index: 100; /* behind slide_nav but above everything else */
    display:none; /* initially hidden */
}

基本上,在代碼中而不是rhs_wrapper中使用了這一新層。

暫無
暫無

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

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