我想从菜单中选择另一个项目后刷新图像:
<html>
<head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$(function() {
$( "#selectable" ).selectable({
stop: function() {
$( ".ui-selected", this ).each(function() {
// Works on FF; doesn't work on Chrome and IE
d = new Date();
$("#chart_image").prop("src", this.id + "?" + d.getTime());
});
}
});
});
$(function() {
// Selects the first <li> element
$( "#selectable" ).selectable().children().first().addClass('ui-selected');
});
</script>
</head>
<body>
<?php
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
$dirname = "charts/";
$images = glob($dirname."*.svg");
echo '<ol id="selectable">';
foreach($images as $image) {
echo '<li class="ui-widget-content" id="'.$image.'">'.basename($image, ".svg").'</li>';
}
echo '</ol>';
echo '<figure><embed id="chart_image" type="image/svg+xml" src="'.$images[0].'"></embed></figure>';
?>
</body>
</html>
以上代码适用于FF。但是,在Chrome和IE上,选择不同的菜单项后没有任何反应。我尝试了将当前时间戳附加到文件末尾的技巧。我也试过缓存标题 - 没有结果。
谢谢!
答案 0 :(得分:2)
所以,问题似乎是embed
类型 type="image/svg+xml"
Firefox似乎支持svg
和普通图片,例如jpg,gif等。而其他浏览器则不然。因此,使其适用于所有浏览器的一种方法是,只要图像不是type="image/jpeg"
,就将类型更改为svg
。如果您的所有图片都是svg
类型,请使用type="image/svg+xml"
。处理此问题的另一种方法是简单地跳过type属性或使用img
标记。
我也有:
selectable
.each()
,因为您将最后选择的ID设置为嵌入来源请查看我使用的below code type="image/jpeg
,它适用于Chrome / FF / Safri等。
$(function() {
$( "#selectable" ).selectable({
stop: function() {
$("#chart_image").attr({
"src": $( ".ui-selected", this )[0].id
});
}
})
.children().first().addClass('ui-selected');
});
&#13;
#feedback { font-size: 1.4em; }
#selectable .ui-selecting { background: #FECA40; }
#selectable .ui-selected { background: #F39814; color: white; }
#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<ol id="selectable">
<li class="ui-widget-content" id="https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Blue_morpho_butterfly.jpg/531px-Blue_morpho_butterfly.jpg">Item 1</li>
<li class="ui-widget-content" id="http://www.potentash.com/wp-content/uploads/2013/03/butterfly.jpg">Item 2</li>
<li class="ui-widget-content" id="http://smwv.org/wp-content/uploads/2013/11/blue-butterfly2.png">Item 3</li>
</ol>
<figure><embed id="chart_image" type="image/jpeg" src="http://smwv.org/wp-content/uploads/2013/11/blue-butterfly2.png" /></figure>
&#13;
答案 1 :(得分:0)
您可以使用selecting
选项
selecting: function(event, ui) {
last_selected_value = ui.selecting.value;
last_selected_id = ui.selecting.id;
$("#chart_image").attr({
"src": last_selected_value
});
}
查看 JS Fiddle
希望这有帮助
答案 2 :(得分:0)
您需要更改src
属性,而不是属性。根据{{1}}方法的jQuery documentation,它应该用于设置以下内容:prop()
,selectedIndex
,tagName
,nodeName
, nodeType
,ownerDocument
或defaultChecked
。
所以解决方案是:
defaultSelected