表突出显示问题

时间:2015-09-29 18:38:08

标签: javascript jquery

Codepen Example

背景:我有一个使用jQuery Plugin的基本表,它实际上允许您将数字居中放在表格中的小数点附近。它通过添加一个"添加"等级的附加td来实现这一点。 (由表中的+表示) - 这很有效,除了我不知道如何制作它所以我可以将鼠标悬停在最后一个"添加" td(由表中的[+]表示)并使其突出显示与在表格中悬停在[7]上时发生的相同

这是我认为需要修改的代码:

$('td').on('mouseenter', function() {
  var id = $(this).data('id');
  var rule = RULES[id];
  if (rule == null)
    return;

  $highlightCells = $('.default-highlight').removeClass('default-highlight');
  rule.forEach(function(id) {
    $('td').filter(function() {
      return $(this).data('id') === id;
    }).next().andSelf().addClass(HIGHLIGHT)
  });
});

可能的解决方案:我在想我应该能够创建一个变量:

var prevId = $(this).prev().attr("data-id");

然后就像

if(prevId == RULES[id]){$highlightCells...}

但我还没有能够采用这种方法。

希望顶部的Codepen很有帮助。

任何想法都非常感激,如果这很明显就道歉,我睡了这个,但还没有真正开始工作。谢谢!

1 个答案:

答案 0 :(得分:0)

我用solo if语句修复了这个问题。我相信这不是最好的解决方案,但它正在发挥作用......所以,这对我来说已经足够了。

感谢阅读。

LINK TO WORKING CODEPEN

如果声明和一些周围的代码(都可以在Codpen中看到):

/*HIGHLIGHTING ON MOUSEENTER*/
$('td').on('mouseenter', function() {
  var prevId = $(this).prev().attr("data-id");
  var id = $(this).data('id');
  var rule = RULES[id];
  var rulee = RULES[prevId];

  if(typeof prevId != 'undefined'){
    $highlightCells = $('.default-highlight').removeClass('default-highlight');
    rulee.forEach(function(prevId) {
      $('td').filter(function() {
        return $(this).data('id') === prevId;
      }).next().andSelf().addClass(HIGHLIGHT)
    });
  }

  if (rule == null)
    return;

  $highlightCells = $('.default-highlight').removeClass('default-highlight');
  rule.forEach(function(id) {
    $('td').filter(function() {
      return $(this).data('id') === id;
    }).next().andSelf().addClass(HIGHLIGHT)
  });
});
/*END*/