3

对于我正在维护的 jQuery 应用程序,我最近所做的一项更改涉及采用如下代码:

$someElement.click(function (e) {
  e.preventDefault();

  $someOverlay.css('left', e.pageX);
  $someOverlay.css('top', e.pageY);
  $someOverlay.fadeIn();
});

并将其修改为:

$someElement.click(function (e) {
  e.preventDefault();

  $someOverlay.css({
    'left': e.pageX,
    'top': e.pageY
  });

  $someOverlay.fadeIn();
});

在发现可以简单地将对象传递给$.css()方法时,我进行了更改。当然,按照我的习惯,我必须考虑这样做的性能影响。在我看来,调用$.css()一次会比调用两次更有效$.css()……但是,这也是 JavaScript,这是一种我不像 C# 那样精通的语言。

那么,问题:上面的哪个代码是将一些 CSS 应用于元素的更高效的方式?

4

2 回答 2

4

第一个答案:几乎可以肯定没关系。

第二个答案:如果您浏览 jQuerycss方法(这绝非易事!),您会发现使用组合形式(传入规范对象)可能更有效。

于 2013-04-02T13:24:29.413 回答
1

第二个变体在这里被描述为很好的部分,所以我认为性能会更好。

// passing object literals as parameters is good practice

var $foo = $( '#foo' );

$foo.css({
  'color': 'red',
  'width': '200px',
  'height': '200px'
});
于 2013-04-02T13:27:29.717 回答