【问题标题】:Incorrect hover using jQuery insertBefore使用 jQuery insertBefore 悬停不正确
【发布时间】:2013-01-07 23:16:31
【问题描述】:

我正在开发一个交互式元素,该元素要求用户通过单击一个段落将段落排序为正确的顺序,然后单击第二个段落以在第二个段落之前或之后插入第一个段落(取决于它们是否在列表中上下移动段落)

http://jsfiddle.net/5ZQkz/2/

我的问题是,当一个段落移动到不同的位置时,单击的第二个段落的悬停状态保持活动状态 - 即使该段落没有悬停在上面。这种情况会一直发生,直到鼠标移动,此时正确的段落显示悬停状态。

例如,单击第 1 段,然后单击第 2 段。段落切换位置,但悬停状态在第 2 段仍处于活动状态,尽管鼠标悬停在第 1 段上。注意 - 此问题不会出现在 Firefox 中。

有什么想法吗?

function swapParas(node1, node2) {
if (node1.index() > node2.index()) node1.insertBefore(node2);
else node1.insertAfter(node2);
node1.hide().fadeIn();
node1.removeClass('selected');
}

【问题讨论】:

    标签: jquery css hover


    【解决方案1】:
    .selected:hover {
      background:green;
    }
    

    试试上面的代码。

    希望这是你想要的。

    这是一个 IE 修复程序。看起来很奇怪,但这是你能得到的最好的:

    function swapParas(node1, node2) {
      if (node1.index() > node2.index()) node1.insertBefore(node2);
      else node1.insertAfter(node2);
      node1.removeClass('selected');
      node2.after("<div class='para'>" + node2.html() + "</div>");
      node2.remove();
    }
    

    【讨论】:

    • 不行,如果你在移动段落后保持鼠标不动,仍然会出现不正确的悬停显示。
    • 您能否进一步说明您想要实现的目标,因为我显然没有理解您的意思。谢谢。
    • 看看jsfiddle。单击第 1 段,然后单击第 2 段并保持鼠标完全静止。您会看到鼠标悬停在第 1 段上,但第 2 段显示悬停状态。
    • 您使用的是哪个浏览器?我问这个是因为它在我的环境中的工作方式不同。单击1,保持鼠标不动,段落切换,第1段显示悬停状态,我猜这是预期的行为。浏览器是最新的 FFox。
    • 我认为是fadIn() 导致了这个问题。无论如何谢谢:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 2010-12-19
    • 1970-01-01
    • 2014-05-07
    • 2011-11-04
    • 2013-02-25
    相关资源
    最近更新 更多