2012-07-14 155 views
2

如何防止dom创建后加载的html元素的默认事件动作。 我有一个页面,其中包含另一个页面通过jquery .load方法,你可以在第一行代码中看到。jQuery通过ajax防止元素上的默认事件

从第三行开始的代码似乎不起作用。当我用a.clearCart单击链接时,浏览器只是加载页面,而不是在后台请求页面。 clearCart类的链接位于名为'Cart.php'的单独文件中,该页面在页面准备就绪时加载。下面

页是:index.php文件

$(document).ready(function(e) { 
    $('#cart').load('./ajax/Cart.php');//a.clearCart is located in this file  



    $("a.clearCart").click(function(e) 
    { 
     e.preventDefault(); 
     return false; 
     $.getJSON('./ajax/clearCart.php?','id=12',check); 
     function check(data) 
     { 
      if(data.Status == "Success") 
      { 
       alert("Update Cart");//For Debugging Only,should call UpdateCart() 
      } 
      else if(data.Status == "Failed") 
      { 
       alert("WTF");//Welcome to Finland 
      } 
     } 
    }); 





    function UpdateCart() 
    { 
     $('#cart').load('./ajax/Cart.php'); 
    } 
    $('.formInfo form').submit(function(e) { 

     var id = this.prodId.value; 
     var qta = this.qty.value; 
     var data = {prodId:id,qty:qta}; 
     $.getJSON('./ajax/addcart.php',data,processData); 

     function processData(data) 
     { 
      if($('p.message').text().length > 5) 
      { 
       $('p.message').empty().removeClass('.success').removeClass('failure'); 

      } 
      if(data.Status == "Failed") 
      { 
       $('p.message').append(data.Reason).addClass('failure'); 
      } 
      else if(data.Status == "Success") 
      { 
       $('p.message').append(data.Reason).addClass('success'); 
       UpdateCart(); 
      } 
     } 

     return false; 
    }); 


}); 

回答

2

您可以使用live()on()功能。我将与on(),因为live()被弃用的jQuery 1.7的显示:

变化

$("a.clearCart").click(function(e) 

$(document).on('click', 'a.clearCart', function(e) { 
    // Code goes here 
}). 

+0

非常感谢你!!我拉着我的头发 – user1125033 2012-07-14 21:23:25

+0

@ user1125033不客气! – 2012-07-14 21:24:04

1

由于其中的return false;,点击功能不起作用。这将通过返回false来结束该功能。

删除那个和ajax代码将被执行。