代码之家  ›  专栏  ›  技术社区  ›  Dustin Getz sunsations

jquery工具提示:附加/删除与显示/隐藏

  •  0
  • Dustin Getz sunsations  · 技术社区  · 15 年前

    我在显示这样的工具提示

    $(clickedElement).append('<span id="activeHelpTip" class="helpTip">Loading help...</span>');
    $('#activeHelpTip').remove();
    

    一位同事建议,在页面加载时,我附加所有可能的工具提示(不提供可见性),并根据需要显示/隐藏它们。

    有什么区别?谁在乎?

    编辑:Ajax服务提供工具提示是否相关?

    5 回复  |  直到 15 年前
        1
  •  1
  •   Rob Fuller    15 年前

    撇开可维护性不谈——您所做的将很好地执行,遵循选择器的严格范围的最佳实践。因此,没有性能方面的原因可以改变。

    从可维护性的角度来看,它肯定可以得到改进,使提示列表更具可编辑性——使文本远离标记。

        2
  •  1
  •   gnarf    15 年前

    我认为使用show和hide而不是append和remove的最大原因是 .remove() 它将销毁所有事件处理程序并缓存 $.data 在要删除的DOM对象上。

    jQuery docs

    从中删除所有匹配的元素 国内。这不会将它们从 jquery对象,允许您使用 进一步匹配的元素。注释 这个函数从1.2.2开始 还将删除所有事件处理程序 以及内部缓存的数据。所以:

        3
  •  1
  •   chaos    15 年前

    我想说,像你同事所说的那样做起来更容易,也更容易维护,因为这通常会导致工具提示在它们所引用的元素旁边,在HTML中,而不是在某个脚本中关闭,并且直接用HTML而不是在JS字符串中编写它们。

    我没有预料到这两种方法中的一种会比另一种更快,或者使用一种有意义的不同数量的记忆。

    重新编辑:如果您的工具提示目前正在通过Ajax进行拉取,那么很自然地,如果它们被预加载到页面中,它们会更快地出现。

        4
  •  0
  •   Technowise    15 年前

    这只是一种更干净更简单的方法。此外,还可以使用不同的方法来显示/隐藏隐藏隐藏元素上的提示,如fadein()/fadeout()、slidedown()/slideup。

        5
  •  0
  •   Nate Kohari    15 年前

    因为您已经在使用jquery,所以应该检查 Tooltip plugin . 它使得显示工具提示非常简单,并且非常灵活。