2012-04-08 43 views
1

我正在为这件事撕碎我的头发 - 它让我发疯,因为它应该如此简单。jQuery和最后一个孩子在IE8中工作不正常

在我的地盘我使用:last-child从Twitter的饲料的最后一个元素删除border-bottom

ul#twitter li:last-child { 
    border: none; 
} 

这在Firefox/Chrome浏览器工作正常,但不是IE8不支持最后的孩子。所以,我转向jQuery和把这个在我的<head>

<!--[if IE 8]> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $('ul#twitter li:last-child').css('border','none !important'); 
     }); 
    </script> 
<![endif]--> 

这有没有影响?我曾尝试使用外部文件,使其不具有IE8特定,有和没有文档准备好...我也尝试过在Firebug中选择器,以确保我的jQuery是正确的,它的一切工作?有任何想法吗?

The site is here

谢谢您的帮助

回答

2

您的代码就好了,这个问题是因为你有在底部的jQuery库的页面,但你的顶部运行你的IE8脚本。

jQuery是尚未加载,所以你的脚本失败(并抛出一个错误,以及,'$' is undefined

jQuery的夹杂物后移的代码,你应该设置。

+1

我以为 - 但不是'$(document).ready(function(){'? – rwb 2012-04-08 10:33:31

+2

@ryan,但'$'还没有存在..关键是允许DOM被加载,但是你有**在使用它之前加载jQuery .. – 2012-04-08 10:34:32

+0

'if($ .browser.msie && parseInt($。browser.version,10)=== 8){'在我的functions.js中做了诀窍 - 谢谢 – rwb 2012-04-08 10:42:32

1

尝试使用:last代替:last-child

$('ul#twitter li:last').css(...) 

仅供参考,:last-child查找该组中的最后一个子元素 - 所以你的情况会在ul#twitter内查找li元素内的最后一个子元素。

:last只是查找集合中的最后一个元素,所以对于您将匹配ul#twitter内的最后一个li本身。

+0

刚刚上传。没有快乐:( – rwb 2012-04-08 10:28:00

0

也许是更好地使用

$('ul#twitter li').last(); 

$('ul#twitter li:last'); 

为您选择

+0

'$('ul#twitter li')。last().css('border','none');'也没有工作(现在在网站上) – rwb 2012-04-08 10:31:06

相关问题