2009-08-03 89 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(); 
     } 
    ); 
});