jQuery siblings () / next () не работает в IE - PullRequest
1 голос
/ 26 октября 2009

этот скрипт 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 ]

2 голосов
/ 26 октября 2009

Он отлично работает как в Firefox, так и в IE7. Вот вам Рабочая демонстрация с вашим кодом.

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

1 голос
/ 26 октября 2009

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

$("a.notes").click(function() {
    $(this).siblings().each(function() {
        alert($(this).attr('class'));
    });
    return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...