如何使用jQuery在firefox中获取background-position-y?

$(elem).css('backgroundPositionY') 

它是在chrome,即和safari上进行的,但不是Firefox(也不是我认为的Opera)。 你认为jQuery会有一个polyfill,但是从1.5开始就没有。 如何轻松获取背景动画(例如视差)的背景Y位置?

编辑 : 告诉Mozilla你想要background-position-[x,y]支持。 (使用“投票”function,而不是评论,除非你有一些有先见之明的东西可以添加)。 Bug从2010年开始(现在已经3年)了,所以不要屏住呼吸。 🙂

 var backgroundPos = $(elem).css('backgroundPosition').split(" "); //now contains an array like ["0%", "50px"] var xPos = backgroundPos[0], yPos = backgroundPos[1]; 

这是我的hacky解决方案:

 var $jQueryObject = jQuery('#jQueryObject'); var backgroundPosition = $jQueryObject.css('background-position'); // backgroundPosition = "0% 0%" for example var displacement = backgroundPosition.split(' '); // ["0%", "0%"] var y = Number(displacement[1].replace(/[^0-9-]/g, '')); // As suggested, you could also get the float: var yFloat = parseFloat(displacement[1].replace(/[^0-9-]/g, '')); 

在这里, y将是一个数字,可以是百分比或像素偏移,具体取决于您的情况。 我做了一个小正则表达式来摆脱非数字字符,所以你可以得到这个数字作为一个javascript数字。

不幸的是,某些浏览器(例如Chrome)将css('background-position')css('backgroundPosition')left top ,而其他浏览器(Internet Explorer,Firefox,Opera)将其报告为 。 以下对我有用:

 var x, y, pos = $(elem).css('background-position').split(' '); if(pos[0] === 'left') { x = pos[1]; y = pos[3]; } else { x = pos[0]; y = pos[1]; } 

建立红杉mcdowell的答案你也可以做到

 var yPos = $(elem).css('backgroundPositionY');