【问题标题】:Radio Button change detection SVG animation单选按钮更改检测 SVG 动画
【发布时间】:2016-01-22 12:03:36
【问题描述】:

当用户选择相应的单选按钮时,我需要运行 svg 动画;引用是等同于动画 id 的单选按钮的值。这是需要发生的事情的稀释示例。

如果用户单击单选按钮,则所有具有该名称的单选按钮都需要具有绿色或蓝色背景:如果是选中的按钮则为蓝色,否则为绿色。

$('input[type="radio"]').change( function(){

    var $scribbleSelectorName = $(this).attr('name');
    var $scribbleSelectorInputs = $("input[name=" + $scribbleSelectorName + "]");

    $($scribbleSelectorInputs).each(function(){


        if ($(this).attr("checked")) {
            $(this).css("background","green");
        }

        else {
            $(this).css("background","blue");
        }

    });

});

这是fiddle。我查看了许多类似的问题,但似乎没有任何效果。

【问题讨论】:

  • 嗨,玛丽亚。请提供工作样本。这里的首选方法是使用code snippet
  • @PaulLeBeau 我已经更新了问题并包含了一个小提琴。

标签: javascript jquery css svg


【解决方案1】:

您的背景有效,但不可见。我更改为突出显示父元素,即<li>

$(this).parent().css("background","green");

我还将$(this).attr("checked") 更改为$(this).prop("checked")

关于问题的第二部分,您可以像这样加载动画:

$('input[type="radio"]').change( function(){
    var $scribbleSelectorName = $(this).attr('name');
    var $scribbleSelectorValue = $(this).attr('value');
    var $image = $('<img/>', {
        'src': imagesMap[$scribbleSelectorName][$scribbleSelectorValue]
    });
    $('.svg-container.' + $scribbleSelectorName).empty().append($image);
});

var imagesMap = {
    test: {
        'A': 'http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/acid.svg',
        'B': 'http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/adobe.svg',
        'C': 'http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/alphachannel.svg',
        'D': 'http://dev.w3.org/SVG/tools/svgweb/samples/svg-files/android.svg'
    },
    anotherGroupOfInputs: {
        //...
    }
};

演示https://jsfiddle.net/mattydsw/gfpj3qsx/2/

【讨论】:

  • 嘿@mkutyba 你确实让小提琴工作了,但由于某种原因,这仍然不能解决我的问题。每个输入的 HTML 及其对应的 SVG 就像 jsfiddle.net/mariahw1190/2gudqwr3 一样,SVG 在同一个图中。我试图改变你的小提琴来选择父级的子 SVG 元素进行动画处理,但我仍然无处可去:[
  • 它应该如何制作动画?这是一个静态路径。
  • SVG 只是一个路径,stroke-dashoffset 是动画属性。我更新了小提琴以包含我用来为其设置动画的脚本 jsfiddle.net/mariahw1190/2gudqwr3/4 。现在,如果选择了相关输入,动画将正确运行,但如果选择了另一个同名输入,则 SVG dashoffset 不会重置。
  • 不要将事件处理程序放在另一个事件处理程序中(.change.change 中),它不会像你期望的那样工作。
  • 嗯,我认为你的脚本更干净,更可靠,所以忽略我所拥有的,所以我打算完全消除它。但是,您的脚本不允许我选择相应的 SVG 元素。
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 2022-01-22
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
相关资源
最近更新 更多