2

クリックするとサイトの背景を切り替えるボタンを作成しようとしています。もちろん、設定を保持するには、設定を Cookie に保存する必要があります。

2 つのスクリプトを組み合わせて、ボタンがクリックされると、背景と切り替えられたままになるようにするにはどうすればよいですか? それとも、「クリックされた」ボディクラスに依存していますか?

背景を切り替えてCookieに保存する方法を見つけました:

$(document).ready(function() {
var body_class = $.cookie('body_class');
if(body_class) {
    $('body').attr('class', body_class);
}
$("#switch").click(function() {
    $("body").toggleClass('clicked');
    $.cookie('body_class', $('body').attr('class'));
});

});

ボタンは、次のように switch_on.png から switch_off.png に切り替えられます。

$(function(){
$(".toggle-swap").click(function() {
if ($(this).attr("class") == "toggle-swap") {
  this.src = this.src.replace("switch_on.png","switch_off.png");
} else {
  this.src = this.src.replace("switch_off.png","switch_on.png");
}
$(this).toggleClass("on");
});

});

私のボタン:

<div id="switch"><a href="#"><img class="toggle-swap" src="../img/switch_on.png" alt=""></a></div>
4

1 に答える 1

0

たとえば、次のように、それを1つの関数に結合します。

$(function() {
    // Create a variable for the current state
    var body_class;

    // Cache some elements
    var $body = $('body'), $switch = $('.toggle-swap');

    // Define a function that toggles background + button
    var toggleBodyClass = function(event) {
        // Toggle the images
        if (body_class) {
            $switch[0].src = $switch[0].src.replace("switch_off.png","switch_on.png");
            body_class = '';
        } else {
            $switch[0].src = $switch[0].src.replace("switch_on.png","switch_off.png");
            body_class = 'clicked';
        }

        // Toggle some css classes (body + button)
        $body.toggleClass('clicked');
        $switch.toggleClass('on');

        // Update the cookie
        $.cookie('body_class', body_class);

        // Prevent the browsers default behavior
        if (event) event.preventDefault();
    };

    // Set the initial state
    if ($.cookie('body_class')) {
        toggleBodyClass();
    }

    // Bind the event handler
    $switch.click(toggleBodyClass);
});
于 2012-05-28T11:08:01.530 に答える