用复选框更改背景图片宽度?

时间:2013-06-05 13:57:18

标签: javascript html css

我有一个简单的Chrome扩展程序,可以将一些html注入游戏网页,让用户自定义网页的背景图片。它使用setlocalstorage存储图像的URL,以便当它们返回游戏时,自定义背景图像仍然存在。我已经包含了一些强制图像适合浏览器窗口宽度的CSS。这满足了大多数用户,但有一些请求我允许他们关闭宽度匹配功能。我想要做的是添加一个复选框,允许用户关闭宽度调整。

我正在考虑某种“如果选中这个盒子将这个类应用于body标签”,但是,我似乎无法弄明白。

如果有人能告诉我如何做到这一点,我真的很感激!

5 个答案:

答案 0 :(得分:3)

将onchange事件侦听器附加到复选框,该复选框检查复选框元素的“已检查”值并添加/删除该类:

yourCheckboxElement.addEventListener('change', function(e){
    document.body.classList[this.checked ? "add" : "remove"]("someClass");
    /* save value of this.checked to localStorage here */
});

jsFiddle示例:http://jsfiddle.net/8RC2m/1/

答案 1 :(得分:1)

选中复选框时更改css:

$("#new").click(function() {
    if (this.checked){
       $(this).closest('p').addClass('white');
    } else {
       $(this).closest('p').removeClass('white');
    } 
});

添加样式:

.white {
   color: white;
}

那可能适合你,不是吗?

此外,

$(":checkbox").attr("autocomplete", "on");

答案 2 :(得分:0)

将宽度调整代码包裹在width-adjustment等css类中。然后尝试这样的事情:

if ($('#IdOfYourCheckBox').is(":checked") == true){
    $("#ElementToChange").removeClass('width-adjustment');
}

答案 3 :(得分:0)

你只是请求了JavaScript,所以我会避免使用jQuery,尝试这样的事情:

var b = document.getElementsByTagName("body")[0];
if (document.getElementById('checkbox-id').checked){
    b.className +=" yourclass";
}

希望有所帮助

答案 4 :(得分:0)

您可以使用此脚本检查是否选中了复选框。

(function( $ ){
 $.fn.check = function( handler ) {
 if (handler) {
  this.each(function() {
    $(this).change(function() {
      if ($(this).attr('checked')) {
        handler.call(this); 
       $(this).closest('p').addClass('white');
      }
    });
  }); 
 } else {
  this.each(function() {
    $(this).attr('checked', true);
    $(this).change();
    $(this).closest('p').addClass('white');
  });
 }
};

 $.fn.uncheck = function( handler ) {
 if (handler) {
  this.each(function() {
    $(this).change(function() {
      if (!$(this).attr('checked')) {
        handler.call(this); 
       $(this).closest('p').removeClass('white');
      }
    });
  }); 
  } else {
  this.each(function() {
    $(this).attr('checked', false);
    $(this).change();
       $(this).closest('p').removeClass('white');
  });
  }
 };
})( jQuery );