У меня есть данные в виде JSON, и я пытаюсь визуализировать его с помощью D3.js. Я хочу дать пользователю возможность того, на каком графике они просматривают данные. Я безуспешно пытался сделать плавный переход между ними, поэтому решил просто сделать это с помощью переключателей. Вот что я получил:Использование кнопок радиосвязи для отображения/скрытия содержимого
$(document).ready(function() {
if ($("input[name='chart']:checked").val() == 'pie') {
// ... Graph 1
} else if ($("input[name='chart']:checked").val() == 'bar') {
// ... Graph 2
}
});
Это показывает график, который имеет свою радиокнопку галочку при загрузке. Однако, когда я нажимаю кнопки, они не меняются. Я провел некоторое исследование и обнаружил, что, вероятно, мне нужно включить функцию change(). Вот то, что я пробовал:
$(document).ready(function() {
$("input[name=chart]:radio").change(function() {
if ($("#chart1Pie").attr("checked")) {
// ... Graph 1
} else if ($("#chart1Bar").attr("checked")) {
// ... Graph 2
}
});
});
Есть несколько вещей неправильно с этим. 1) Выбранный график не загружается при загрузке страницы. 2) При нажатии переключателя появляется только круговая диаграмма. 3) При нажатии на другую радиокнопку предыдущий график не исчезает; он просто ставит новый под ним.
Я рассмотрел несколько вопросов StackOverflow, и ни одна из них не решила проблему. Кто-нибудь может мне помочь? Благодаря!
Многие проблемы происходят, когда люди используют .attr, когда они должны использовать .prop. В ответе Карла-Андре, если ($ ("# chart1Pie"). Prop ("checked")) вернет true и false. Прочтите api для получения дополнительной информации: http://api.jquery.com/prop/. –
+1 дерьмо firefox. Не показывал, что уже есть ответ. и я закончил публикацию другого ответа. – PSL
1 вопрос. Как бы я плавно переключался между двумя графиками? (например, с использованием .slideToggle, .fadeToggle и т. д.). Я попробовал добавить два слайда в каждый оператор if, но это выглядит ужасно. – TFischer