jQuery проблема привязки кликов в IE6 / 7 - PullRequest
0 голосов
/ 22 января 2010

У меня есть проблема в IE6 / 7, где они игнорируют живое связывание элементов. Кажется, я не могу найти решения этой проблемы, и мне действительно нужна поддержка IE6 и 7 (исправление одного должно исправить другое). Первый щелчок по моим элементам работает как задумано, но после слов привязка исчезает, и я не могу заставить ее работать. Этого не происходит в IE8 или любых других современных браузерах.

Вот мой код. Как видите, в строке 5 я оповещаю о переменной hrefID. После первого клика hrefID ясно показывает мне, что привязка исчезает, поскольку она печатает href, который совершенно другой.

Может кто-нибудь помочь?

// AJAX Page Changing
$("#mContainer a:lt(6),#home a").live("click", function(){
    var clickID = 0;
    var hrefID = $(this).attr("href");
    alert(hrefID);
    switch(hrefID){
        case 'home':
            clickID = 0;
            break;
        case 'portfolio':
            clickID = 1;
            break;
        case 'resume':
            clickID = 2;
            break;
        case 'about':
            clickID = 3;
            break;
        case 'contact':
            clickID = 4;
            break;
        case 'tutorials':
            clickID = 5;
            break;
    }
    $.ajax({
      type: 'POST',
      url: "/includes/pages/"+hrefID+".php",
      data: "ajaxtab=1",
      cache: false,
      success: function(code){
          // Change Tab Image
          var expireDate = new Date(new Date().getTime()+86400000*5); //5 Days
          document.cookie = "soluml="+hrefID+";expires="+expireDate.toGMTString();
          $("#body").fadeTo("fast", 0, function(){$("#body").html(code);});
          $("#body").fadeTo("fast", 1);
          $.post("/includes/topnav.php",{ajaxtab:clickID},function(data){$("#mContainer").html(data)});
      },
      error: function(){
          return true;
      }
    });
    return false;
});
//

Ответы [ 2 ]

0 голосов
/ 16 февраля 2010

Вы используете jquery-1.4? важные изменения в .live доступны только с jquery-1.4.

может быть, вы можете попробовать это, он использует event.target вместо this:

// AJAX Page Changing
$("#mContainer a:lt(6),#home a").live("click", function(e){
    var clickID = 0;
    var hrefID = $(e.target).attr("href");
    alert(hrefID);
    switch(hrefID){
        case 'home':
            clickID = 0;
            break;
        case 'portfolio':
            clickID = 1;
            break;
        case 'resume':
            clickID = 2;
            break;
        case 'about':
            clickID = 3;
            break;
        case 'contact':
            clickID = 4;
            break;
        case 'tutorials':
            clickID = 5;
            break;
    }
    $.ajax({
      type: 'POST',
      url: "/includes/pages/"+hrefID+".php",
      data: "ajaxtab=1",
      cache: false,
      success: function(code){
          // Change Tab Image
          var expireDate = new Date(new Date().getTime()+86400000*5); //5 Days
          document.cookie = "soluml="+hrefID+";expires="+expireDate.toGMTString();
          $("#body").fadeTo("fast", 0, function(){$("#body").html(code);});
          $("#body").fadeTo("fast", 1);
          $.post("/includes/topnav.php",{ajaxtab:clickID},function(data){$("#mContainer").html(data)});
      },
      error: function(){
          return true;
      }
    });
    return false;
});
//
0 голосов
/ 22 января 2010

Я не уверен на 100%, если это проблема, но JSLint кричит о пропущенной точке с запятой Старые IE гораздо менее просты, чем современные браузеры, поэтому я бы сначала попробовал. Я очень сомневаюсь, что проблема в том, чтобы жить самому.

Это:

$.post("/includes/topnav.php",{ajaxtab:clickID},function(data){$("#mContainer").html(data)});

Должно быть:

$.post("/includes/topnav.php",{ajaxtab:clickID},function(data){$("#mContainer").html(data);});

REF: http://jslint.com/

Проблема в строке 36, символ 101: Отсутствует точка с запятой.

...