我正在尝试切换具有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>
然而,它有时会起作用,有时却不起作用。实际上,当我点击它带我到另一个页面的链接时,它在第一页加载时给出了JS错误,说'对象预期'。当我点击浏览器后退按钮并返回原始页面时,一切都按预期工作。我正在使用ie6
答案 0 :(得分: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>
答案 1 :(得分: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();
});
答案 2 :(得分:0)
你需要将事件作为参数传递,正如其他人所说的那样,但我想也许它与链接实际加载之前执行的代码有关?尝试将代码移动到$(document).ready()块:
$(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();
});
});
您应该在此函数中放置与页面上的元素交互的代码(在页面加载时)。
对不起,如果你这样做,只是省略了这个细节:)
(另外,如果你没有尝试在页面加载时这样做,我只是再次阅读这个问题,现在我不太确定......)
答案 3 :(得分: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();
}
);
});