ie和firefox中列表选择的不同行为?

时间:2011-12-08 06:02:37

标签: jquery html cross-browser


<ul id='reorderps'>
<li><span><a href=''>+</a>Item 1</span></li>
 <ul>
   <li><span><a href=''>+</a>Sub Item 1</span></li>
   </ul>
 </ul>

当我尝试做一个等级1和等级2的项目时,我有一个这样的无序列表

jQuery('a').parent().parent().html();它在ie中表现不同。在IE中,它将低于它的ul作为它的孩子,但在mozilla它不是。可能是什么原因和解决方案。

1 个答案:

答案 0 :(得分:0)

我在IE&amp; Firefox,两者都采用相同的`+第1项

你也错过了第一个父母的括号,我已经像这样测试了

$("#reorderps").append(jQuery('a').parent().parent().html());

结果我在两个浏览器中都有这个

+Item 1
+Sub Item 1
+Item 1

这是jsfiddle http://jsfiddle.net/sUxyt/1/

为什么选择第1项?因为jQuery('a')向你返回数组,而jQuery('a')意味着jQuery('a').eq(0)

如果你想采取下一行,你必须写一些这种

$("#reorderps").append(jQuery('a').eq(1).parent().parent().html());

在这种情况下,你必须在我的jsfiddle

的例子中得到这个
+Item 1
+Sub Item 1
+Sub Item 1

修改

我根据需要更改了Javascript部分,就像这样

jQuery('ul#reorderps a').click(function(e){ alert(jQuery(this).parent().parent().html()); e.preventDefault(); });

是的,IE 7和IE中存在差异。其它浏览器。所有都需要从这个

更改您的HTML
<ul id='reorderps'>
<li><span><a href=''>+</a>Item 1</span></li>
 <ul>
   <li><span><a href=''>+</a>Sub Item 1</span></li>
   </ul>
 </ul>

<ul id='reorderps'>
<li><span><a href=''>+</a>Item 1</span></li>
    <li>
 <ul>
   <li><span><a href=''>+</a>Sub Item 1</span></li>
   </ul>
    </li>
 </ul>

这种行为的原因是IE 7无法识别你的li的结束标记,并且使你的li的innerHTML变得更大。 将li添加到第二部分可以解决问题:)