代码之家  ›  专栏  ›  技术社区  ›  dongilmore

我使用的jquery太多了吗?我什么时候过这条线?

  •  25
  • dongilmore  · 技术社区  · 5 年前

    最近,我发现自己经常使用jquery和javascript,经常和使用css之前一样。

    例如,我使用javascript/jquery替换表行颜色或创建按钮和链接悬停效果。这可以接受吗?或者我应该继续使用CSS来处理这些事情吗?

    所以真正的问题是: 当我使用太多jquery时?当我越过这条线时,我怎么能理解?

    8 回复  |  直到 7 年前
        1
  •  86
  •   Andy E    7 年前

    如果您使用的是jquery中的另一个数字,而不使用jquery就可以轻松地完成这些任务,那么您就越线了。 jquery。jquery的目的是让生活更轻松,但不应以牺牲兼容性或可用性为代价。

    jquery当然不应该被用来替代css——想想那些禁用了javascript的用户。

    我知道这张照片被滥用了,但有人不得不把它扔到这里:

    image credit - bobines

    . jquery的目的是让生活更容易,但它不应该以牺牲兼容性或可用性为代价。

    jquery当然不应该被用来替代css——想想那些禁用了javascript的用户。

    我知道这张照片被滥用了,但有人不得不把它扔到这里:

    Image Credit - bobince .

        2
  •  7
  •   Nick Craver    14 年前

    我不认为这里有一条“线”,我认为这里有一些直截了当的事情和一些灰色区域,你必须平衡你想要的东西。高级功能、性能、兼容性,想想这些都是三角形的,很难做到这三点 尽可能的好 同时。

    如果CSS可以做到,当然可以用CSS来做到。如果不能在CSS中完成,请使用jquery,但不要在不需要开销的地方使用jquery,例如。 $(this).attr("id") 通常可以 this.id ,许多东西在DOM上是严格可用的,并且仍然以跨浏览器的方式使用。

    你什么时候用得太多了?当它不是 需要 ,有时您需要jquery用于跨浏览器的ccs3选择器,有时您使用的css选择器已经可用。 把它放在样式表中 . 还有很多其他的例子,但是如果你能在没有它的情况下以一种跨浏览器的干净方式通过它,那么就没有必要了,像褪色这样的事情并不是轻而易举的事情。如果您需要包含jquery,就没有理由不使用 .fadeIn() 一旦你(代码已经包含在内,为什么要复制它?)

    javascript与无javascript

    正如评论中所说,你的网站应该提供 没有javascript的所有基本功能 这通常不是问题,例如通过Ajax捕获点击并加载内容……如果您不捕获内容,他们会进行整页重新加载,这是对标准行为的简单回退。然而,所有的“钟声和哨声”?这是固执己见,但我认为你不应该屈从于提供 全部的 没有javascript的功能。用户关闭了它,他们没有得到花哨的东西,那很好……作为一个例子,禁用javascript会禁用很多 非本质特征 你可以四处浏览,但主要是评论、投票 行动 没有javascript就不一定可用。

        3
  •  6
  •   Arnej65    14 年前

    如果你在浏览器上关闭Java脚本,并且你的站点/应用程序不运行或者看起来功能不正常,那么你就有问题了。

    JS很好,但是如果禁用了它,它应该永远不会阻止用户使用您已经构建的东西。

        4
  •  4
  •   Justin Niessner    14 年前

    如果它是一个很容易在CSS中实现的东西,那么就放弃jquery,在CSS中实现它。这样,您就不必依赖于JavaScript的执行来获得应用程序的外观。

        5
  •  2
  •   Harmen    14 年前

    如果可以设置一个类属性而不是许多样式属性,则使用jquery的次数太多。例如:

    /** Select 400 rows and change the background colour **/
    $('#table tr').css('backgroundColor', 'blue');
    

    而不是:

    /** jQuery **/
    $('#table').addClass('blueRows');
    
    /** CSS **/
    #table tr.blueRows {
        background-color: blue;
    }
    

    为了避免jquery样式,您还可以为主体设置一个类,以便在启用了javascript的浏览器中更容易使用CSS进行样式设置:

    /** jQuery **/
    $(document).addClass('JS-enabled');
    
    /** CSS **/
    body #table tr{
        background: #FFF;
    }
    
    body.JS-enabled #table tr {
        background: blue;
    }
    
        6
  •  0
  •   Alec    14 年前

    jquery通常在加载文档后应用。我想如果你能用简单的CSS来实现同样的事情,那么CSS就是你要做的事情。减少浏览器的负载,如果有人没有启用jquery,至少还有(一些)样式是因为css。

        7
  •  0
  •   DisgruntledGoat    14 年前

    例如,我使用javascript/jquery替换表行颜色或创建按钮和链接悬停效果。这可以接受吗?或者我应该继续使用CSS来处理这些事情吗?

    实际上,这取决于您的浏览器支持。您可以使用以下代码在表上执行Zebra条带化:

    table.classname tr:nth-child(even) td {
      background-color: #ddd;
    }
    

    但这在Internet Explorer中根本不起作用(尽管它在即将到来的版本9中应该起作用)。因此,如果您需要所有东西看起来都是相同的跨浏览器,请使用jquery。

    对于链接悬停效果,假设您的意思是颜色变化等,而不是花哨的动画, 绝对使用CSS 因为这在任何地方都得到了支持。

        8
  •  0
  •   Kurru    7 年前

    好吧,别把我当成巨魔…

    如果你的web应用不能在一个没有启用javascript或者与jquery不兼容的环境中工作,那么你只需要选择最容易管理的。如果一个应用程序实际上根本不起作用,那么对它进行可视化支持没有好处。

    如果你想让它在没有javascript支持的情况下工作,那么你应该尝试使用css。但是,如果你不打算不支持javascript,并且它可以工作,那么你可以选择最简单的方式。