【发布时间】:2023-04-09 20:18:02
【问题描述】:
我发现这个脚本可以做我想做的事,我唯一想做的就是在多维数据集中插入一个图像。
但我不知道该怎么做。
我以前没见过这种格式:
<rect id="region1" x="50" y="0" width="100" height="100"/>
不确定如何通过在其中添加<img src=""> 来处理它。
需要帮助。
编辑:这是我找到的脚本。我真的不需要 svg 部分。我想要的只是在<div></div> 中有一个图像,当我点击它时,它将执行 CSS 和 jQuery 脚本......
这是我正在使用的代码:
$("rect").click(onRectClick);
$("#sel1").change(onSelectChange);
function onRectClick(evt)
{
// Get the id of the region we clicked on
var regionId = evt.target.id;
// Update the dropdown
$("#sel1").val(regionId);
// Highlight the relevant region
setRegion(regionId);
}
function onSelectChange()
{
// Get selected class from dropdown
var selectedRegion = $("#sel1").val();
// Highlight the relevant region
setRegion(selectedRegion);
}
function setRegion(regionId)
{
// Remove "selected" class from current region
$("rect.selected").removeClass("selected");
// Add "selected" class to new region
$('rect#'+regionId).addClass("selected");
// Note: for addClass() etc to work on SVGs, you need jQuery 3+
}
// Init map based on default select value
onSelectChange();
rect {
fill: #ccc;
stroke: #999;
stroke-width: 2;
cursor: pointer;
}
rect:hover {
fill: #888;
}
rect.selected {
fill: #ff7409;
}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<svg width="300" height="300">
<rect id="region1" x="50" y="0" width="100" height="100"/>
<rect id="region2" x="150" y="0" width="100" height="100"/>
<rect id="region3" x="0" y="100" width="100" height="100"/>
<rect id="region4" x="100" y="100" width="100" height="100"/>
<rect id="region5" x="200" y="100" width="100" height="100"/>
<rect id="region6" x="50" y="200" width="100" height="100"/>
<rect id="region7" x="150" y="200" width="100" height="100"/>
</svg>
<div>
<label for="sel1">Seleziona Area:</label>
<select class="form-control" id="sel1">
<option value="region1">1 - Udine Centro</option>
<option value="region2">2 - Rizzi / S. Domenico / Cormor / S. Rocco</option>
<option value="region3">3 - Laipacco / San Gottardo</option>
<option value="region4">4 - Udine sud</option>
<option value="region5">5 - Cussignacco</option>
<option value="region6">6 - S. Paolo / S. Osvaldo</option>
<option value="region7">7 - Chiavris / Paderno</option>
</select>
</div>
【问题讨论】:
-
您不能在 svg 中添加
img元素,但您可以将svg和img包装到父容器中,并将img设置为绝对且相对于它。然后,您需要解决您的点击行为。或者您可以使用image元素。见stackoverflow.com/questions/30897108/… -
基本上我不需要那个svg。我想要的只是在 中有一个图像,当我点击它时,它将执行 CSS 和 jQuery 脚本...
-
所以你只需要一组固定大小的可点击图片?
-
是的。基本上,当您单击图像时,它将执行 jQuery 和 CSS。我想最合乎逻辑的方法是在图像周围包裹一个 div 并为 div 应用 CSS。
标签: javascript html jquery css