在jquery中切换链接

在jquery中切换链接,jquery,Jquery,我正在尝试切换id为showmember的链接 我做了以下几件事 $("#table2").hide(); //this is for hiding table when page loads first time $("#showmember").toggle(function(){ $("#table2").show(); $("#showmember").html("Hide Member Details"); event.preve

我正在尝试切换id为showmember的链接

我做了以下几件事

$("#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>
$(“#表2”).hide()//这用于在页面首次加载时隐藏表
$(“#showmember”).toggle(函数(){
$(“#表2”).show();
$(“#showmember”).html(“隐藏成员详细信息”);
event.preventDefault();
}, 
函数(){
$(“#表2”).hide();
$(“#showmember”).html(“显示成员详细信息”);
event.preventDefault();
});

然而,它有时有效,有时无效。实际上,当我点击链接将我带到另一个页面时,它会在第一个页面加载时给我JS错误,说“预期对象”。当我点击browser back(浏览器返回)按钮并返回到原始页面时,一切正常。我使用的是ie6,您没有将事件对象传递到函数中

$("#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>
$(“#表2”).hide()//这用于在页面首次加载时隐藏表
$(“#showmember”).toggle(函数(事件){
$(“#表2”).show();
$(“#showmember”).html(“隐藏成员详细信息”);
event.preventDefault();
}, 
功能(事件){
$(“#表2”).hide();
$(“#showmember”).html(“显示成员详细信息”);
event.preventDefault();
});

处理程序函数中缺少对参数事件的引用,不确定这是否是问题的原因,但在执行时可能有助于创建with not throw exception

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

您将需要像其他人所说的那样将事件作为参数传递,但我假设这可能与链接实际加载之前执行的代码有关?尝试将代码移动到$(document).ready()块:

您应该将与页面上的元素交互的代码(在页面加载时)放在这个函数中

$("#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>
请原谅,如果你这样做只是忽略了那个细节:)


(另外,如果您不想在页面加载时执行此操作,请原谅,我只是再次阅读了问题,现在我不太确定…

如果您从切换处理程序中删除
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();
        }
    );
});

你能粘贴完整的脚本吗。你在文档中准备好这个连接脚本了吗?另外,如果你在ie中打开脚本调试,你可以使用脚本调试器或visual studio(express edition)调试这个问题,给或花4分钟是的:)哦,只是为了添加。。。我认为“return false;”与本例中的preventedfaul()的作用相同,因此我可能会使用它,而忽略事件对象。