【问题标题】:pass 2 objects to jquery.css()将 2 个对象传递给 jquery.css()
【发布时间】:2013-05-07 17:07:49
【问题描述】:

在去urff上最短代码的路上。

我有一个对象,我在其中进行特征检测。然后我将结果传递给 jquery.css() 命令。但我确实有一些其他的 CSS 规则,我也需要申请。我不能将它们放入对象中,因为这些规则有时会有所不同。所以我现在传递了两个 jquery.css() 命令,但我试图从中做出一个,只是为了性感..

var myObject  = (Modernizr.csstransforms ? {transform: 'translateX(123px)'} : {left: 123});
$("#elem").css(myObject).css({ sexyness: 0 });

当我尝试让它变成这样的时候:

$("#elem").css(myObject, { sexyness: "100%" });

是我遗漏了什么,还是已经做到了这一点?

【问题讨论】:

  • 您应该尽可能避免使用css。如果您需要将它用于动态值,就这样吧,但对于静态样式,您应该使用 addClassremoveClasstoggleClass
  • 谢谢。它是动态的,上面的代码只是一个例子..

标签: javascript jquery javascript-objects


【解决方案1】:

你可以使用$.extend()来合并这两个css属性对象

$("#elem").css($.extend({}, myObject, { sexyness: "100%" }));

【讨论】:

    【解决方案2】:

    您需要“粘合”对象并使用新对象设置样式。看起来像这样:

    固定

    $.extend(myObject, { sexyness: "100%" });
    $("#elem").css(myObject);
    

    【讨论】:

      【解决方案3】:
      $("#elem").css($.extend({}, myObject, { sexyness: "100%" }));
      

      jQuery.extend

      【讨论】:

        【解决方案4】:

        错误 :( 误读 API jQuery 1.9 允许你使用属性数组,所以你可以这样做:

        var myObject  = (Modernizr.csstransforms ? 
                                  ["transform: translateX(123px)"] : 
                                  ["left: 123"]);
        $("#elem").css(myObject.add("sexyness: 80"))
        

        让我们作弊并使用 JSON.parse,它可以让我们简单地连接字符串

        var myObject  = (Modernizr.csstransforms ? 
                         'transform: "translateX(123px),"'} : 
                         'left: 123,');
        $("#elem").css(JSON.parse(myObject + 'sexyness : 80'))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-15
          • 1970-01-01
          • 1970-01-01
          • 2012-03-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多