如果选中复选框,则添加样式
If check box is selected add style
如果选中复选框,我将尝试添加填充颜色,然后在取消选中复选框时删除颜色。需要能够同时选中多个复选框。
到目前为止,我只能在路径->样式中添加颜色,但当复选框未选中时无法删除它。
到目前为止,这就是我所拥有的:
<form id="mapform" action="">
<input type="checkbox" name="color" value="blue"> blue<br>
<input type="checkbox" name="color" value="green"> green<br>
<input type="checkbox" name="color" value="yellow" > yellow<br>
<input type="checkbox" name="color" value="red" > red<br>
</form>
<a class="color" xlink:href="#">
<path color="blue" style="enable-background:accumulate;color:#000000;" d="m1847.9,1886.3,24.914-1.9938,2.9897,46.856-25.911,0-8.969-28.912z" fill-rule="nonzero" stroke-dashoffset="0"/>
</a>
<a class="color" xlink:href="#">
<path color="green" style="enable-background:accumulate;color:#000000;" d="m1847.9,1886.3,24.914-1.9938,2.9897,46.856-25.911,0-8.969-28.912z" fill-rule="nonzero" stroke-dashoffset="0"/>
</a>
<a class="color" xlink:href="#">
<path color="yellow" style="enable-background:accumulate;color:#000000;" d="m1847.9,1886.3,24.914-1.9938,2.9897,46.856-25.911,0-8.969-28.912z" fill-rule="nonzero" stroke-dashoffset="0"/>
</a>
<a class="color" xlink:href="#">
<path color="red" style="enable-background:accumulate;color:#000000;" d="m1847.9,1886.3,24.914-1.9938,2.9897,46.856-25.911,0-8.969-28.912z" fill-rule="nonzero" stroke-dashoffset="0"/>
</a>
JS-
$(document).ready(function(){
$("#mapform input").change(function(){
var checkedColor = $("#mapform input:checked").val();
$("path[color*="+ checkedColor +"]").css("fill","#008fff");
$("path[color!="+checkedColor+"]").css("fill","#595a5c");
});
});
添加到@amura.cxgs回答并回答您的后续问题
是的,有可能出现"相反"的行为
您需要连接锚点的click
事件。
$('#mapform input').change(function() {
var checkedColor = $(this).val();
var checked = $(this).prop('checked');
$('path[color*=' + checkedColor + ']').css('fill', checked ? checkedColor : '#595a5c');
});
$('a.color').on('click', function() {
var checkedColor = $('path', this).attr('color');
var checked = $('#mapform input[value*="' + checkedColor + '"]').prop('checked');
$('#mapform input[value*="' + checkedColor + '"]').prop('checked', !checked);
$('path[color*=' + checkedColor + ']').css('fill', !checked ? checkedColor : '#595a5c');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mapform">
<input type="checkbox" name="color" value="blue" />blue
<br />
<input type="checkbox" name="color" value="green" />green
<br />
<input type="checkbox" name="color" value="yellow" />yellow
<br />
<input type="checkbox" name="color" value="red" />red
<br />
</div>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<a class="color" xlink:href="#">
<path color="blue" d="M0 0 H 10 V 10 H -10 Z" />
</a>
<a class="color" xlink:href="#">
<path color="green" d="M0 30 H 10 V 20 H -20 Z" />
</a>
<a class="color" xlink:href="#">
<path color="yellow" d="M0 50 H 10 V 40 H -40 Z" />
</a>
<a class="color" xlink:href="#">
<path color="red" d="M0 70 H 10 V 60 H -60 Z" />
</a>
</svg>
当复选框未选中时,您的代码现在的样子checkedColor
没有任何值,选择器也不匹配
$(document).ready(function(){
$("#mapform input").change(function(){
var checkedColor = $(this).val();
var checked = $(this).prop("checked");
if(checked)
{
$("path[color="+ checkedColor +"]").css("fill","#008fff");
}
else
{
$("path[color="+checkedColor+"]").css("fill","#595a5c");
}
});
});
相关文章:
- 如果window.location.href.indexOf('player=1')添加样式
- 如果选中复选框,则添加样式
- 尝试在随机文本和图像脚本中添加样式/更改字体
- 使用javascript为单词添加样式
- IMG悬停添加样式
- 如何在jquery locationpicker插件中为地图添加样式
- Jquery 在 ASP 文本框上添加样式不起作用
- 如何使用JavaScript/jQuery有条件地添加样式表
- 希望在提醒框中添加样式
- struts2 文本区域 仅为一个单词添加样式
- 使用Javascript为样式切换器添加样式表的最佳方法
- 从用户输入向元素添加样式
- Stylus:为在 JavaScript 中生成的 ID 添加样式
- 在 ajax 函数中向 DIV 添加样式更改
- 在更改时使用javascript函数时向html.dropdownlist添加样式
- .html() 在查询中使用 html() 添加样式
- 动态地向 HTML 表添加样式 - 使用 DOM、JS
- 我可以在 innerHTML 中添加样式标签吗?
- angular ng在条件下重复添加样式
- 制作一个Firefox插件来注入一些DIV并添加样式.那'是的