2013-08-29 105 views
0

這是我與工作代碼:http://jsfiddle.net/qKyNL/12/è防止默認工作不

$('a').click(function(){ 
    event.preventDefault(); 
    var number = $(this).attr('href'); 
    alert(number); 
    // AJAX 
    $.ajax({ 
     url: "/ajax_json_echo/", 
     type: "GET", 
     dataType: "json", 
     timeout: 5000, 
     beforeSend: function() { 
      // Fadeout the existing content 
      $('#content').fadeTo(500, 0.5); 
     }, 
     success: function (data, textStatus) { 
      // TO DO: Load in new content 
      // Scroll to top 
      $('html, body').animate({ 
       scrollTop: '0px' 
      }, 300); 
      // TO DO: Change URL 
      // TO DO: Set number as active class 
     }, 
     error: function (x, t, m) { 
      if (t === "timeout") { 
       alert("Request timeout"); 
      } else { 
       alert('Request error'); 
      } 
     }, 
     complete: function() { 
      // Fade in content 
      $('#content').fadeTo(500, 1); 
     } 
    });  
}); 

我想創建一個可降解的分頁,使用jQuery但問題是,「E防止默認的」不似乎觸發了,而是依然沿着鏈接。任何人都可以請告訴我如何讓這個鏈接可降解,所以如果Jquery被禁用它仍然有效。

回答

2

您沒有傳入事件對象。試試這個:

$('a').click(function(event){ // <-- notice 'event' passed to handler 
event.preventDefault(); 
+0

是這樣的嗎? http://jsfiddle.net/qKyNL/14/ 仍然不工作:( – Jimmy

+1

如果你加載jQuery它效果更好:-) http://jsfiddle.net/qKyNL/16/ –

0

應該

$('a').click(function(event){

的第一道防線。請注意,event作爲參數傳遞給匿名函數。

0

event傳遞迴調。

嘗試

 $('a').click(function(event){ 
------------------------------^ 

      event.preventDefault(); 
    } 
0

至於其他的答案說,你需要將事件變量傳遞給回調

$('a').click(function(event) { 
    event.preventDefault(); 
}); 

您還需要包裝所有的代碼到功能齊全的jQuery因此只有在jQuery準備好處理它們時纔會分配事件監聽器。

$(document).ready(function() { 
    $('a').click(function(event) { 
     event.preventDefault(); 

     // the rest of your code 
    }); 
}); 
+0

原來這不是必要的。但我覺得很好的做法。各自爲政 – JConstantine