这似乎在IE8中失败(尚未测试7,但肯定也会失败)函数中的value
返回undefined
。它在Firefox中运行良好:
$('selector').css('property', function(index, value){ alert(value); });
我脚本中的实际代码如下:
$('.scrollBkg').css('background-position', function(index, value){
var backgroundPosition = value.split(' ');
return (parseFloat(backgroundPosition[0]) + (($(this).hasClass('scrollLeft') ? -1 : 1) * parseInt($(this).css('z-index'))) / 2) + 'px ' + backgroundPosition[1];
});
为什么IE中value
为undefined
?相反,我怎样才能按预期工作呢?
答案 0 :(得分:5)
在MSIE中检索 backgroundPositionY 和 backgroundPositionX 而不是 backgroundPosition
var backgroundPosition = (document.all && !window.opera)
?[$(this).css('backgroundPositionX'),
$(this).css('backgroundPositionY')]
: value.split(' ');
答案 1 :(得分:1)
我不确定这是不是你的问题,但是...... IE7和8都存在选择器/ id值的singel引号问题,并且可能找不到相应的DOM元素。
最近我刚刚在IE端完成了一个非常高的jquery项目,并且我将所有的'引号切换为“以使其工作。
在您的情况下尝试:
$("selector").css("property", function(index, value){ alert(value); });
所以我建议的是,IE从未找到你的元素,因此无法为其添加新类,因此“未定义”
对于jquery中的任何css值,我倾向于使用双引号而不是单引号。
答案 2 :(得分:1)
根据relevant section of the jquery documentation:
function(index, value)
:将值返回到set的函数。接收集合中元素的索引位置和旧值作为参数。
因此,如果之前没有设置任何值,我预计value
可能是undefined
,也可能是null
。我可以看到浏览器之间的这种行为是不同的 - 实质上,这是一个问题,浏览器的默认值是你正在使用的css属性。 IE的默认值可能是undefined
,而firefox默认值更有意义。