Javascript jQuery-在.css()方法中组合变量和字符串

Javascript jQuery-在.css()方法中组合变量和字符串,javascript,jquery,Javascript,Jquery,如何在jQuery中的.css()方法中将字符串和变量组合为属性 如果设置background-position-x和background-position-y,我可以很容易地做到这一点,但Firefox和Opera不支持它们 function bgPos() { jq('element').each(function() { var bgPosX = 10; var bgPosY = 20; jq(this).css("backgroun

如何在jQuery中的
.css()
方法中将字符串和变量组合为属性

如果设置
background-position-x
background-position-y
,我可以很容易地做到这一点,但Firefox和Opera不支持它们

function bgPos() {
    jq('element').each(function() {
        var bgPosX = 10;
        var bgPosY = 20;
        jq(this).css("background-position", "bgPosX + 'px', bgPosY + 'px'");
    });
}

.css
不接受3参数,因此您可以通过提供一个对象来实现所需的功能

大声说

jq(this).css({ backgroundPosition: bgPosX + "px " + byPosY + "px" });

去掉变量周围的引号:

jq(this).css("background-position", bgPosX + 'px' + bgPosY + 'px');

去掉第二个逗号…

这里的其他答案是不正确的,因为jQuery的
css()
方法不支持3个参数,它们将导致您的
bgPosY
值被完全忽略(默认为
50%
)。
我不确定其中一个是如何获得多个向上投票的


这里有两个选项:

字符串串联 您可以使用
+
符号将两个变量连接成一个字符串:

.css({ backgroundPosition: bgPosX + "px " + byPosY + "px" })
请注意,我是如何删除了
px
bgPosY
之间的逗号,并添加了一个空格来分隔这两者:
“px”

设置单个属性 或者,您可以只设置单个
backgroundPositionX
backgroundPositionY
属性:

编辑:正如Blazemonger在中指出的,Firefox不支持这些单独的属性,因此如果您希望支持Firefox,您应该使用第一个选项)



值得注意的是,我在这里使用的是对象表示法,而不是字符串,这仅仅是因为我发现这更简洁。第一个示例可以继续使用
“background-position”
,第二个示例可以继续使用
“background-position-x”
“background-position-y”

删除变量名称周围的引号。css(“背景位置”,bgPosX+'px',bgPosY+'px');啊!我应该在没有引号的情况下尝试,我不知道为什么我坚持认为整个语句必须用引号包装。非常感谢。我不知道为什么这个答案被两次否决。这是错误的。jQuery的
css()
方法不接受像您在这里所做的那样的3个参数。@JamesDonnelly,很抱歉,因为我只关注那里给出的问题。@JamesDonnelly我没有看到3个参数,但在这里传递了1个。@Bart您可以在这里查看编辑历史:@Mritunjay jQuery的
css()
方法接受一个或两个参数。请参阅jQuery的文档:。你刚才复制了我在答案中的内容。第一种方法更具普遍性;Firefox(目前)不支持单独的X和Y属性。@Blazemonger啊,你说得很对。我不知道Firefox不支持这一点。我想应该是这样,但这是Mozilla为您准备的——标准符合错误。
.css({
    backgroundPositionX: bgPosX,
    backgroundPositionY: bgPosY
})