0

我仍然有问题,我不知道如何解决它。感谢给出的答案,我知道它的外观,但我不知道如何让它工作。


我的 javascript 复选框代码有问题。

我有一个隐藏 div 的功能(我的另一篇文章:javascript,当右 div 被隐藏时,左 div 必须为 100% 宽度

但是当我刷新页面时,复选框将再次被选中,我阅读了一些关于 cookie 的内容,但我不知道如何实现这一点。

我的 JavaScript 代码:

$(function() {
    $("#foo").on("click",function() {
        if ($(this).is(':checked')) $('#checked-a').show('fast',function() {
            $('#checked-b').css("width","60%");
            $('#checked-a').css("width","38%");
        }) ;
        else $('#checked-a').show('fast',function(){
           $('#checked-b').css("width","100%").show();         
           $('#checked-a').css("width","0%").hide();

        });
    });
});

我的复选框的html代码:

<input type="checkbox" checked="checked" name="foo" id="foo" />

我的分区:

    <div class="content1" id="checked-b">
    <%= button_to "Zoek", search_index_path, :method => :get, :class => 'contentlinks' %>
    <%= button_to "Print", root_url, :class => 'contentlinks' %>
    <%= button_to "Edit", root_url, :class => 'contentlinks' %>
    <%= button_to "Add", root_url, :class => 'contentlinks' %>
<br>    

<div class="spacing">
    <%= yield %>
</div>

</div>


<div class="content2" id="checked-a">

谢谢。

4

3 回答 3

1

刷新页面后,您的 jQuery 片段不会执行,因为它取决于“单击”操作。

Web 浏览器会看到checked="checked",它会检查您的复选框。

您应该使用变量来帮助网络浏览器记住您的答案。

于 2012-06-20T09:35:15.493 回答
1

我会在您的网址中使用哈希来实现这一点。

请看这段代码:

// set the state of your div as hash
window.location.hash = "#hide-div"; 

// now on document ready check the following
if(window.location.hash == '#hide-div') {
    // do something to hide your div and uncheck your checkbox
} 

if(window.location.hash == '#show-div') {
    // do something to show your div and ucheck your checkbox
} 

还有文档:https ://developer.mozilla.org/en/DOM/window.location

编辑:

$(function() {
    $("#foo").on("click",function() {
        if ($(this).is(':checked')) $('#checked-a').show('fast',function() {
            $('#checked-b').css("width","60%");
            $('#checked-a').css("width","38%");
            window.location.hash = "#show-div"; 
        }) ;
        else $('#checked-a').show('fast',function(){
           $('#checked-b').css("width","100%").show();         
           $('#checked-a').css("width","0%").hide();
           window.location.hash = "#hide-div";     
        });
    });

    if(window.location.hash == '#show-div') {
        // do something to hide your div and uncheck your checkbox
        $("#foo").trigger('click');
    } 
});
于 2012-06-25T11:56:11.093 回答
1

如果您不希望默认选中复选框,请使用

<input type="checkbox" name="foo" id="foo" />

代替

<input type="checkbox" checked="checked" name="foo" id="foo" />

如果您想在页面首次加载时检查复选框的状态,请添加这段 JavaScript。

$(document).ready(function(){
    if ($("#foo").is(':checked')){
        $('#checked-b').css("width","60%");
        $('#checked-a').css("width","38%");
    } else {
        $('#checked-b').css("width","100%");
        $('#checked-a').css("width","0%").hide();
    }
});

如果您希望用户的浏览器在每次用户访问您的网站时记住“foo”复选框的状态,您可能需要阅读 cookie。这是 w3schools 的 JS Cookies 指南


编辑

我不会声称这是有效的,因为我没有尝试过,我自己也没有使用过 cookie(但我确实重新发现谷歌基本上可以解决所有问题。当你给它半个时,这真的很容易努力)

$(document).ready(function(){
    if (get_cookie( "fooIsChecked" ) == 1){
        $('#foo').prop("checked", true);
        $('#checked-b').css("width","60%");
        $('#checked-a').css("width","38%");
    } else {
        $('#foo').prop("checked", false);
        $('#checked-b').css("width","100%");
        $('#checked-a').css("width","0%").hide();
    }
    $("#foo").on("click",function() {
        if ($(this).is(':checked')){
            set_cookie( "fooIsChecked", "1", 30 );
            $('#checked-a').show('fast',function() {
                $('#checked-b').css("width","60%");
                $('#checked-a').css("width","38%");
            }) ;
        } else {
            set_cookie( "fooIsChecked", "0", 30 );
            $('#checked-a').show('fast',function(){
                $('#checked-b').css("width","100%").show();         
                $('#checked-a').css("width","0%").hide();
            });
        }
    });
});

function set_cookie ( cookie_name, cookie_value, lifespan_in_days, valid_domain ){
    var domain_string = valid_domain ? ("; domain=" + valid_domain) : '' ;
    document.cookie = cookie_name +
        "=" + encodeURIComponent( cookie_value ) +
        "; max-age=" + 60 * 60 * 24 * lifespan_in_days +
        "; path=/" + domain_string;
}

function get_cookie ( cookie_name ){
    var cookie_string = document.cookie;
    if (cookie_string.length != 0) {
        var cookie_value = cookie_string.match (
            '(^|;)[\s]*' + cookie_name + '=([^;]*)' );
        return decodeURIComponent ( cookie_value[2] ) ;
    }
    return '' ;
}

从站点向导修改的代码

于 2012-06-27T07:24:07.947 回答