2012-04-27 78 views
0

让我首先说我不是一个JavaScript程序员或jQuery大师,我实际上只是从jQuery开始。jQuery代码差异

我有两个以下的jQuery代码:

$('.tipTrigger').hover(function(){ 
    $(this).toggleClass('active').prev('.tipText').stop(true, true).fadeToggle('fast'); 
}); 

if ($(".tooltip-container").length > 0){   
    $('.tipTrigger').hover(function(){ 
     $(this).toggleClass('active').prev('.tipText').stop(true, true).fadeToggle('fast'); 
    }); 
} 

几个问题我有这样的:

  1. 什么基本上是上述两个代码之间的差异?
  2. if ($(".tooltip-container").length > 0){是什么意思?
  3. 使用上述if有什么好处?
  4. 从开发人员的立场来看,更有效率吗? (也就是说如果这么小的东西会以任何方式对性能有相当大的影响)

任何其他意见/帮助与这个简单的比较将不胜感激。

在此先感谢。

+1

欢迎使用jQuery:D – SpYk3HH 2012-04-27 18:12:03

回答

1
  • 基本上两个代码之间的区别是什么?

    第二个将只设置悬停功能,如果有什么含义与类“工具提示容器”

  • 在页面上的元素,如果“($(”工具提示-container“)。length> 0){'?

    简单的if语句来测试是否有类tooltip-container元素文件

  • 存在是否有使用上述if有什么好处?

    总而言之,在这种情况下,不是真的,因为.hover不会被赋值,除非有一个类为tipTrigger的元素。此外,这可能会导致性能问题,因为它只检查是否存在一个tooltip-container元素。如果这是一个检查以确保tipTrigger在容器内部是“内部”,那么一旦找到一个带有tooltip-container的元素,将会失败,所有包含tipTrigger的元素将被分配悬停功能,这可能是不希望的。

  • 从开发者的立场来看,更有效率吗? (也就是如果事情这么小会以任何方式相当大的性能影响)

    如果必须进行检查,以确保只有tipTriggertooltip-container元件使用燃煤,你可以考虑使用jQuery的.each function或使用CSS在选择器,如下

>

$('.tooltip-container .tipTrigger').hover(function(){ 
    $(this).toggleClass('active').prev('.tipText').stop(true, true).fadeToggle('fast'); 
}); 

对于下进一步站在

  • .toggleClass:肘节的类活性这一元件上
  • .prev:移动链条到引用该中DOM
  • .stop当前元素之前时具有tipText类元素:停止任何anymation在当前这个元件
  • .fadeToggle:将开始淡化元素为“隐藏”
+0

SpYk3HH,所以我们假设我有一个带有自定义脚本的单个JavaScript文件,即:“custom-scripts.js”包含在网站的所有页面中。通过在页面读取custom-script.js文件时使用上面的if语句,它将只执行该文件中与该特定页面的DOM中的元素相匹配的脚本。这样做会好吗?谢谢。 – 2012-04-27 18:37:16

+0

@Ricardo是的,但你仍然在做一个DOM遍历来寻找'.tooltip-container'元素(用'if'),所以我不相信它会向你购买任何东西。非'ifif'版本执行相同的遍历查找'.tip-trigger'元素 - 如果没有,它也不会执行任何操作。 – 2012-04-27 18:51:38

+0

我会详细阐述一下:我想到这个想法的原因是因为我需要为离岸开发人员保持简单,他们很难遵循最佳实践。因此,通过一个处理所有脚本的单个JS文件,他们不必担心向页面添加特定脚本,他们只会包含一个自定义JS文件,就是这样。事情是,我不知道用if语句创建所有自定义脚本是否是一个好主意,并且做到这一点并创建单个JS文件也是如此。我的直觉告诉我它不是,但我想知道你的意见 – 2012-04-27 19:24:05

4

仅当存在一个或多个类别为"tooltip-container"的DOM元素时,第二个设置悬停功能。

都遍历DOM以查找具有指定类的元素;不论是否效率的差异是值得依赖于DOM,当语句被称作等

4
  1. 悬停功能将仅被注册...
  2. ...至少有类“tooltip-container”中的一个元素。
  3. 可能会有轻微的表现,除非这些工具提示的工作方式有一些隐藏的魔力,我不知道。
  4. 如果它不会减慢速度或出现错误,我通常会赞成使用更简洁的代码,而不是通过微小的性能调整。