.attr ('href') возвращает неопределенный - PullRequest
2 голосов
/ 15 августа 2011

Я использую простое решение JQuery, чтобы получить ссылку на ссылку и применить ее к событию click. Это работает в браузерах Webkit и Gecko, однако Internet Explorer (7 и 8) продолжает отображать местоположение href как undefined . Кто-нибудь получил решение для этого? Может помочь мне решить это? Очень ценится, если так.

 $('table tr').click(
    function () {
        var element = $(this).attr("class");
        var hrefLocation = $('#'+ element +' .deal-holder a').attr('href');
        alert(hrefLocation)
        window.location.href = hrefLocation;
        return false; 
    }
);

HTML прост:

 <tr class="QRG">
    <td class="blue"><a href="#QRG">QRG</a></td>
    <td>Company Sale</td>
    <td>Technology</td>
 </tr>


 <div class="deal" id="QRG">
      <p><span class="js">Overview</span><span class="no-js">Enham</span></p>
      <div class="deal-holder">
         <div class="image-holder">
             <img src="../assets/images/enham.gif" alt="" height="70" width="150" />
         </div>
         <p>Enham is a charity established in 1918, which delivers a wide range of essential services that provide choice and empowerment to disabled people to make their own decisions about their lives. Enham is a charity established in 1918, which delivers a wide range of essential services that provide choice and empowerment to disabled people to make their own decisions about their lives</p>
         <a class="moreInfo" href="individual.html">More Information</a>
      </div>
 </div>

Ответы [ 4 ]

4 голосов
/ 15 августа 2011

Ничто не выскакивает из-за того, что я не прав.

Сначала убедитесь, что вы используете последнюю версию jQuery, поскольку это иногда может помочь.

Я изменил ваш код, чтобы ссылка внутри tr имеет событие click:

$('table tr a').click(function (e) {
    var element = $(this).closest('tr').attr("class"),
        hrefLocation = $('#'+ element +' .deal-holder a').attr('href');
    alert(hrefLocation)
    window.location.href = hrefLocation;
    e.preventDefault();
});

Я сделал демо здесь , и оно работает в IE 7,8 и 9. Надеюсь, это поможет.

1 голос
/ 15 августа 2011

Не зная остальную часть вашего HTML-кода, трудно точно определить, в чем заключается ваша проблема, поведение в значительной степени зависит от того, как структурирован ваш HTML-код ... Но проведя быстрый тест, он работает: Пример ,просто использует указатель $(this), чтобы получить дочернюю ссылку.

0 голосов
/ 16 августа 2011

Попробуйте обернуть его в функцию готовности.
IE может пытаться добавить событие к объекту до его появления в DOM:

$(document).ready(function(){

   $('table tr').click(
      function () {
         var element = $(this).attr("class");
         var hrefLocation = $('#'+ element +' .deal-holder a').attr('href');
         alert(hrefLocation);

         window.location.href = hrefLocation;
         return false; 
      });

});
0 голосов
/ 15 августа 2011

Возможно, вам потребуется выбрать первый элемент в группе гиперссылок.

$('table tr').click(
    function () {
        var element = $(this).attr("class");
        var hrefLocation = $('#'+ element +' .deal-holder a').eq(0).attr('href');
        alert(hrefLocation)
        window.location.href = hrefLocation;
        return false; 
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...