2013-06-05 3 views
0

У меня есть простое расширение Chrome, которое вводит некоторый html в веб-страницу игры, которая позволяет пользователю настраивать фоновое изображение веб-страницы. Он хранит URL-адрес изображения с помощью setlocalstorage, поэтому, когда они возвращаются в игру, пользовательское фоновое изображение все еще присутствует. Я включил CSS, который заставляет изображение соответствовать ширине окна браузера. Это удовлетворяет большинство пользователей, но есть несколько запросов, которые я попросил, чтобы они отключили функцию сопоставления ширины. Я хотел бы добавить флажок, чтобы пользователь мог отключить настройку ширины.Изменить ширину фонового изображения с помощью флажка?

Я думаю что-то вроде «если флажок установлен, примените этот класс к тегу тела», но я не могу понять его.

Если кто-то может показать мне, как это сделать, я бы очень признателен!

+0

Было бы также хорошо видеть ваш код в jsfiddle. – Supplement

ответ

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

Вопрос не относится к jQuery в любом месте. – nmoliveira

+0

Это может помочь с кешем. http://usejquery.com/blog/create-self-caching-website-ready-offline-usage-html5-and-jquery – Supplement

0

Wrap код регулировки ширины в классе CSS, как width-adjustment. Тогда попробуйте что-то вроде этого:

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

Вы запросили JavaScript только так я избежит JQuery, попробовать что-то вроде этого:

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

надеюсь, что это помогает

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); 
3

Приложите OnChange слушателя событий с флажком, который проверяет значение 'проверено' для CheckBox элемента и добавляет/удаляет класс:

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/

+0

УДИВИТЕЛЬНО! Это отлично работало и прекрасно сочеталось с моим существующим кодом. Вместо того, чтобы менять цвет на синий, я просто создал класс, который устанавливает: background-size: auto! Important –

+0

Есть ли способ сохранить проверенное или непроверенное состояние, когда пользователь покидает страницу? –

+0

Сохраните значение «checked», используя localStorage, когда значение изменится. Восстановите его при загрузке и добавьте класс в тело, если сохраненное значение истинно. – nderscore