Jquery переключает фон?
-
05-07-2019 - |
Вопрос
DKK
" идентификатор="radio2" значение="75" />У меня есть куча таких записей div, сгенерированных циклом while, поэтому я хочу добиться этого :ПРИ нажатии на ввод внутри элемента ввода я хочу, чтобы фоновое изображение элемента ввода изменилось, но если я выберу другое радио в другом элементе ввода..Я бы хотел, чтобы все предыдущие изменения (например, предыдущее изменение фона) исчезли и изменили фон текущего div ..вот что я пытался сделать , может быть , вы сможете помочь ..вот jquery ниже
$("input").click(function() {
$(this).parent("div").toggle(function() {
$(this).parent("div").css("background", "url(images/div_bg_hover.png)");
}, function() {
$(this).parent("div").css("background", "url(images/div_bg.png)");
});
Что - то работает со сбоями ..Я имею в виду , что код вообще не работает ..кто - нибудь может мне помочь ?Спасибо
Я пробовал и то, и другое :
$("input").click(function() {
$("input").each(function() {
if (this.checked) {
$(this).parent("div").addClass("highlight");
}
else {
$(this).parent("div").removeClass("highlight");
}
});
});
И
$("input").click(function() {
$("input").each(function() {
if (this.checked) {
$(this).parent("div").css("background", "url(images/div_bg_hover.png)");
}
else {
$(this).parent("div").css("background", "url(images/div_bg.png)");
}
});
});
по какой-то причине он вообще не работает, не изменяя фон, возможно, это должно что-то сделать с приведенным выше кодом, вот полный сценарий :
<script type="text/javascript">
$(document).ready(function() {
$(".left_navigation a:last").toggleClass('bolder');
$("input").each(function() {
var element_value = $(this).val();
$(this).prev("p").append(" " + element_value + ",-");
});
$("input").click(function() {
$("input").each(function() {
if (this.checked) {
$(this).parent("div").addClass("highlight");
}
else {
$(this).parent("div").removeClass("highlight");
}
});
});
});
</script>
Решение
Первая непосредственная проблема, которую я вижу, заключается в том, что в вашем jQuery отсутствует });
в конце, если только вы просто не забыли вставить его туда.Это помешало бы ему делать что-либо, кроме выдачи ошибки...
Это упрощенная версия того, что вы пробовали раньше.Это могло бы, по крайней мере, немного упростить отладку.
<script type="text/javascript">
$(document).ready(function(){
$("input").click( function() {
$("input").parent("div").removeClass("highlight");
$(this).parent("div").addClass("highlight");
});
});
</script>
Хотя я не вижу ничего явно неправильного в том, что вы пробовали раньше, что заставляет меня задаться вопросом, если $("input")
соответствует тому, что вы думаете, что это такое.Я бы, вероятно, по крайней мере, предупредил некоторые вещи внутри вашей функции click для проверки работоспособности.На самом деле я несколько раз обнаруживал, что мой $(document).ready
стрелял раньше, чем я думал , что это было , т. е.до того, как мои входные данные были готовы из-за моего фреймворка...
Другие советы
Есть несколько проблем:
- Вы используете Переключить и функция переключения - это:
Если они отображаются, переключатель делает их скрытыми (с использованием метода hide).Если они скрыты, переключение делает их отображаемыми (с использованием метода show).
Вы должны спросить, проверено ли радио
Вы должны вызвать функцию each, чтобы изменить другие значения radio div
Вам следует позвонить в
$(document).ready()
функция
Образец (Предупреждение:Javascript - не мое лучшее оружие):
<script>
$(document).ready(function(){
$("input").click( function() {
$("input").each(function() {
if (this.checked) {
$(this).parent("div").css("background-color", "green") }
else {
$(this).parent("div").css("background-color", "red")}
});
});
});
</script>
Примечание:Я использовал backgound-color для лучшего тестирования, но вы хорошо используете background.
возможно, вам придется использовать "background-image" вместо просто "background" для установки изображений.
Редактировать:думал, что у меня раньше были проблемы с css-свойством 'background' в jQuery, но, только что протестировав его в различных браузерах, кажется, я либо ошибся, либо это было исправлено в версиях jQuery, поскольку я работал с ним.