【发布时间】:2014-12-17 18:35:58
【问题描述】:
我正在创建一个应用程序来监控集群上的节点,这是视觉状态的一个示例。网格中的每个小框代表一个节点,当前,当悬停在一个节点上时,相应机架(网格)中的其余部分会淡出。
这是通过 photobucket 提供的链接,因为我的声誉极低,无法插入图片: visual state
在 Chrome 和 Firefox 中,悬停进出单个节点会立即淡入/淡出机架中的其余节点,但在 IE 11 中会有明显的延迟。我知道 IE 的 javascript 引擎比 Chrome 和 Firefox 慢,但我把它扔出去看看 SO 社区是否可以挑选我的代码并提出更好的方法,因为我不是最伟大的前端程序员。谢谢,这是我的代码的 sn-ps:
来自django模板(每个节点都有id="matrix-box-<node #>"):
<tr>
<td id="visual-state"><b>visual state</b></td>
<td id="matrix" colspan=5>
{% for row in v.22 %}
{% if v.23 == "ca" %}
{% if forloop.counter0|divisibleby:4 %}
<div id="rack-{% widthratio forloop.counter0 4 1 %}-{{ k }}" title="rack-{% widthratio forloop.counter0 4 1 %}">
{% endif %}
{% elif v.23 == "cs" %}
{% if forloop.counter0|divisibleby:8 %}
<div id="rack-{% widthratio forloop.counter0 8 1 %}-{{ k }}" title="rack-{% widthratio forloop.counter0 8 1 %}">
{% endif %}
{% endif %}
<div class="row">
{% for elem in row %}
{% if elem.1 == "#49E20E" %}
<div class="node node-faded" id="matrix-box-{{ elem.0 }}-{{ k }}" style="background: #00DC00;" title="{{ elem.0 }}"></div>
{% elif elem.1 == "#0000CD" %}
<div class="node node-faded" id="matrix-box-{{ elem.0 }}-{{ k }}" style="background: #0000CD;" title="{{ elem.0 }}"></div>
{% elif elem.1 == "yellow" %}
<div class="node node-faded" id="matrix-box-{{ elem.0 }}-{{ k }}" style="background: yellow;" title="{{ elem.0 }}"></div>
{% elif elem.1 == "#E3170D" %}
<div class="node node-faded" id="matrix-box-{{ elem.0 }}-{{ k }}" style="background: #E31702;" title="{{ elem.0 }}"></div>
{% elif elem.1 == "brown" %}
<div class="node node-faded" id="matrix-box-{{ elem.0 }}-{{ k }}" style="background: #6E3737;" title="{{ elem.0 }}"></div>
{% elif elem.1 == "orange" %}
<div class="node node-faded" id="matrix-box-{{ elem.0 }}-{{ k }}" style="background:#DC7800;" title="{{ elem.0 }}"></div>
{% elif elem.1 == "black" %}
<div class="node node-faded" id="matrix-box-{{ elem.0 }}-{{ k }}" style="background: black;" title="{{ elem.0 }}"></div>
{% elif elem.1 == "#cccccf" %}
<div class="node node-faded" id="matrix-box-{{ elem.0 }}-{{ k }}" style="background: #CCCCCF;border: 1px solid #CCCCCF"></div>
{% endif %}
{% endfor %}
</div>
... other code
来自css代码:
.node {
width: 4px;
height: 4px;
float: left;
border: 1px solid #B0B0B0;
background: #cccccf;
margin: 0 !important;
cursor: pointer;
filter: alpha(opacity=100);
opacity: 1;
}
.faded .node-faded {
width: 4px;
height: 4px;
filter: alpha(opacity=50);
opacity: .5;
}
.active {
width: 4px;
height: 4px;
float: left;
border: 1px solid black;
background: #cccccf;
margin: 0 !important;
cursor: pointer;
filter: alpha(opacity=100);
opacity: 1;
}
来自js代码:
var node = null;
var node_id = null;
var rack = null;
var nodes = null;
$(document).ready(function(){
$('[id^=matrix-box]').on({
mouseenter: function(){
node = $(this);
rack = node.parent().parent();
rack.addClass('faded');
node.removeClass('node-faded').addClass('active');
},
mouseleave: function(){
node.removeClass('active').addClass('node-faded');
rack.removeClass('faded');
},
click: function(e){
...other code
此外,任何建设性的批评(尽管有帮助而不是恶意)总是受欢迎的。再次感谢!
【问题讨论】:
标签: javascript jquery css frontend