2012-11-09 53 views
1

我有一個複選框。當它被選中時,會出現一個段落。當它未被選中時,它隱藏。這沒有問題。問題是:如果我選中複選框,當按F5(刷新)按鈕時,複選框仍然被選中,但段落被隱藏。我想刷新頁面時出現段落。如何在頁面刷新時運行jquery函數?

這裏是HTML:

<input type="checkbox" id="something"> 
<p id="info" style="display:none">Yes ,checkbox is checked now...</p> 

這裏是jQuery的:

$(document).ready(function() { 

    $("#something").change(function(){ 
     if($(this).is(':checked')) { 
      $("#info").show(); 
     } else { 
      $("#info").hide(); 
     } 
    }); 
}); 

回答

2

你只需要觸發事件

$(document).ready(function() { 

    // this only runs upon the event 
    $("#something").change(function(){ 
     if($(this).is(':checked')) { 
      $("#info").show(); 
     } else { 
      $("#info").hide(); 
     } 
    }); 

    // trigger the event 
    $("#something").trigger("change"); 
}); 
3

您應在裝貨檢查複選框的狀態:

$(document).ready(function() { 
    function f() { 
     if($('#something').is(':checked')) { 
      $("#info").show(); 
     } else { 
      $("#info").hide(); 
     } 
    } 
    $("#something").change(f); 
    f(); 
}); 
1

您當前的行爲是因爲您有更改的事件處理程序。所以,當你做F5並刷新時,即使它被檢查,也沒有改變。

你可以只調用這個函數的document.ready

function SetParagraphStatus() { 
    if ($(this).is(':checked')) { 
     $("#info").show(); 
    } else { 
     $("#info").hide(); 
    } 
} 

$(document).ready(function() { 

    $("#something").change(SetParagraphStatus); 
    // call it anyway for load. 
    SetParagraphStatus(); 
}); 
1

只是觸發change事件。

$(document).ready(function() { 
    $("#something").change(function(){ 
     $("#info").toggle(this.checked); 
    }).change() 
}) 
0
$(window).bind("beforeunload", function(){ 

    $("#something >#info").show(); 

}); 
+0

您必須從代碼分開添加你的答案的一些總結,使你的答案更加清晰。 – afzalex

+0

當用戶離開頁面時,您的解決方案會觸發 - 這意味着當再次生成DOM時,仍會隱藏「#info」元素。此外,這個問題在近2年前(11/2012)被問到,實際上Balexandre的答案解決了這個問題。 – Gabor

相關問題