jQuery siblings()/ next()在IE中不起作用

时间:2009-10-26 10:26:21

标签: jquery

这个jQuery脚本适用于firefox,它提供警报。 但它在IE 7中不起作用。知道出了什么问题吗?

标记:

<td class="tdnotes">
  <a title="" class="notes" id="order-1" href="#">
   <!-- an image -->
  </a>                              
  <div style="display: none;" id="wrap-order-1" class="thenotes">
   <!-- text area, input elements -->
  </div>
 </td>

脚本:

  $(function(){  

    $("a.notes").click(function() {
        alert($(this).siblings().attr("class"));
        // I have tried .next() but didn't work as well 
        // alert($(this).next().attr("class"));
        return false;
    }); 

  });

2 个答案:

答案 0 :(得分:2)

它在Firefox和IE7中都运行正常 - 这是您的代码的 Working Demo

karim79是正确的siblings()会为您提供一个集合,但将attr()链接到siblings()会获得匹配集中第一个元素的指定属性。由于<a>notes在此示例中只有一个兄弟,因此这适用于此实例中的预期。如果你想获得包装集中所有兄弟节点的类属性,那么你需要以某种方式迭代它们,很可能使用each()map()

答案 1 :(得分:1)

大概是因为siblings()会给你一个集合,所以你需要遍历匹配的元素:

$("a.notes").click(function() {
    $(this).siblings().each(function() {
        alert($(this).attr('class'));
    });
    return false;
});