2009-10-26 2 views
1

этот скрипт jQuery работает на firefox, он дает предупреждение. , но он не работает в IE 7. Есть идеи, что пошло не так?jQuery siblings()/next() не работает в IE

разметка:

<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; 
    }); 

    }); 
+0

Вы добавляете обработчик кликов в готовые() или загружаете() ? – cletus

ответ

2

Он отлично работает как в Firefox, так и в IE7. Вот Working Demo с кодом.

karim79 прав в том, что siblings() получит вам коллекцию, но сцепление attr() на siblings() получит вам указанный атрибут первого элемента в согласованном наборе. Так как <a> с классом notes имеет только один родственный брат в этом примере, то это отлично подходит для ожидаемого в этом экземпляре. Если вы хотите получить атрибуты класса всех братьев и сестер в завернутом наборе, вам нужно будет каким-то образом перебрать их, возможно, используя each() или map()

+0

Да, это работает в IE7. получилось, есть что-то еще, из-за чего это не работает. спасибо –

1

Предположительно потому, что братья и сестры() получат Вас коллекцию, так что вам нужно перебрать соответствующие элементы:

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