0

要素のライブ バインディングを無視する 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;
});
//
4

2 に答える 2

0

これが問題かどうかは 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);});

参照: http://jslint.com/

36 行目の文字 101 の問題: セミコロンがありません。

于 2010-01-22T19:29:28.100 に答える
0

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;
});
//
于 2010-02-16T09:21:52.957 に答える