2009-08-03 95 views
1

我想切換一個id爲showmember的鏈接。jquery中的切換鏈接

我做了以下

$("#table2").hide(); //this is for hiding table when page loads first time 
$("#showmember").toggle(function(){ 
     $("#table2").show(); 
     $("#showmember").html("Hide Member Details");  
     event.preventDefault(); 
     }, 
     function() { 
     $("#table2").hide(); 
     $("#showmember").html("Show Member Details");  
     event.preventDefault(); 
}); 
<a id="showmember" href="" >Show Member</a> 

但是,它的工作原理有時,有時沒有。事實上,它給了我第一頁加載JS錯誤,說'對象預期',當我點擊鏈接,需要我到不同的頁面。當我點擊瀏覽器後退按鈕,回到原來的頁面,然後一切按預期工作。我正在使用ie6

+0

您可以粘貼您的完整腳本。文檔準備好了嗎? – redsquare 2009-08-03 17:38:43

+0

另外,如果你打開腳本調試ie ie你可以調試與腳本調試或視覺工作室(快遞版將做) – redsquare 2009-08-03 17:39:44

回答

2

您沒有將事件對象傳入函數。

$("#table2").hide(); //this is for hiding table when page loads first time 
$("#showmember").toggle(function(event){ 
      $("#table2").show(); 
      $("#showmember").html("Hide Member Details");  
      event.preventDefault(); 
     }, 
     function (event) { 
      $("#table2").hide(); 
      $("#showmember").html("Show Member Details");  
      event.preventDefault(); 
}); 
<a id="showmember" href="" >Show Member</a> 
+0

這個問題仍然沒有解決問題.. – Omnipresent 2009-08-03 17:32:11

0

你缺少的處理函數中的參考參數事件,不知道這是你的問題的原因,但可以幫助有難同當它執行

$("#showmember").toggle(function(event){ 
     $("#table2").show(); 
     $("#showmember").html("Hide Member Details");  
     event.preventDefault(); 
     }, 
     function (event) { 
     $("#table2").hide(); 
     $("#showmember").html("Show Member Details");  
     event.preventDefault(); 
}); 
+0

哇它的差不多我的答案的副本! – redsquare 2009-08-03 17:40:53

0

不會拋出異常你將需要將事件作爲參數傳遞,正如其他人所說的那樣,但我想也許這是在鏈接實際加載之前執行代碼的一些事情?嘗試將代碼移動到$(文件)。就緒()塊:



$(document).ready(function(){ 
    //Your code: 
    $("#table2").hide(); //this is for hiding table when page loads first time 
    $("#showmember").toggle(function(event){ 
      $("#table2").show(); 
      $("#showmember").html("Hide Member Details");  
      event.preventDefault(); 
     }, 
     function (event) { 
      $("#table2").hide(); 
      $("#showmember").html("Show Member Details");  
      event.preventDefault(); 
    }); 
}); 

你應該把代碼與在此功能頁面上的元素(在頁面加載)相互作用。

原諒我,如果你這樣做,只是省略了詳細:)

(另外,原諒我,如果你不試圖做到這一點在頁面加載,我只是再次,現在讀的問題進出口不太確定...)

0

如果您從切換處理程序中刪除event.preventDefault()行,它應該正常工作。我在IE6中測試了以下代碼。

$(function() { 
    $("#table2").hide(); //this is for hiding table when page loads first time 
    $("#showmember").toggle(
     function() { 
      $("#table2").show(); 
      $("#showmember").html("Hide Member Details"); 
     }, 
     function() { 
      $("#table2").hide(); 
      $("#showmember").html("Show Member Details"); 
     } 
    ); 
}); 

我不相信你需要防止的默認操作從因爲你沒有給錨值的href屬性,你的情況存在的。如果您決定阻止默認操作,您需要像其他人提到的那樣在切換處理程序中定義事件參數。

$(function() { 
    $("#table2").hide(); //this is for hiding table when page loads first time 
    $("#showmember").toggle(
     function(e) { 
      $("#table2").show(); 
      $("#showmember").html("Hide Member Details"); 
      e.preventDefault(); 
     }, 
     function(e) { 
      $("#table2").hide(); 
      $("#showmember").html("Show Member Details"); 
      e.preventDefault(); 
     } 
    ); 
});