与IE6 / 7的jQuery实时点击绑定问题

时间:2010-01-22 17:57:13

标签: ajax jquery click live

我在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 :(得分:0)

我不是百分百确定这是否是问题,但是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:缺少分号。

答案 1 :(得分: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;
});
//