jQuery .css()函数不适用于变量[重复]

Posted

技术标签:

【中文标题】jQuery .css()函数不适用于变量[重复]【英文标题】:jQuery .css() function not working with variable [duplicate] 【发布时间】:2018-09-05 05:35:35 【问题描述】:

我正在尝试创建一个基于用户输入更新 CSS 的函数,并且除了 CSS 属性参数外,它都可以正常工作。

$(document).ready(function() 
  $('input').blur(function() 
    var inputName = $(this).attr("name");
    updateCSS(inputName, 'button-style-one', 'background-color');
  )

  // Function to update CSS
  function updateCSS(pInputNameAttribute, pElementClass, pCssProperty) 
    var inputName = '[name=' + pInputNameAttribute + ']',
      elementClass = '.' + pElementClass,
      inputValue = $(inputName).val();

    $(elementClass).css(
      pCssProperty: inputValue
    );
  
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="submit.php" method="post" id="buttonSettings">
  <input type="text" name="button_background_color" placeholder="Background Color">
</form>

<a href="#" class="button-style-one">Button</a>

如果我将pCssProperty: inputValue 替换为'background-color': inputValue,则此方法有效,但我需要CSS 属性作为函数的参数——我怎样才能让这个属性与变量一起工作? JSFiddle:https://jsfiddle.net/frafgdnq/10/

【问题讨论】:

当你定义一个对象时,比如 jQuery 的.css() 方法作为参数的对象,你可以有不带引号的属性名。变量通常不会插入到冒号的左侧。因此,您的代码试图设置一个字面上命名为 pCssProperty 的 CSS 属性。 【参考方案1】:

您可以通过首先创建对象然后分配密钥来访问您的 css 对象的 pCssProperty 的内容:

var cssObj = ;
cssObj[pCssProperty] = inputValue;
$(elementClass).css(cssObj);

...或者使用这个 ES6 简写来做同样的事情:

$(elementClass).css([pCssProperty]: inputValue)

$(document).ready(function() 
  $('input').blur(function() 
    var inputName = $(this).attr("name");
    updateCSS(inputName, 'button-style-one', 'background-color');
  )

  // Function to update CSS
  function updateCSS(pInputNameAttribute, pElementClass, pCssProperty) 
    var inputName = '[name=' + pInputNameAttribute + ']',
      elementClass = '.' + pElementClass,
      inputValue = $(inputName).val();

    $(elementClass).css(
      [pCssProperty]: inputValue
    );
  
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="submit.php" method="post" id="buttonSettings">
  <input type="text" name="button_background_color" placeholder="Background Color">
</form>

<a href="#" class="button-style-one">Button</a>

【讨论】:

+1 我知道发生了什么,但我不知道您可以将变量放在方括号中以获取对象定义中的值。

以上是关于jQuery .css()函数不适用于变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Css calc()函数不适用于sass文件[重复]

.remove() 似乎不适用于我的 jQuery 函数

Jquery对话框不适用于图像单击[重复]

jQuery .click 不适用于 jQuery 生成的按钮 [重复]

网页颜色检索适用于 jQuery,但不适用于 javascript

简单脚本不适用于 jQuery 中的 .prepend() 和 .css() 方法