对于我的生活,我似乎无法破解这一点。我是jQuery的新手,但我只想简单地说:
我正在处理的链接指向 / mypagename
#panel
上触发动画,但不要让链接像往常一样运行。但是,添加.nav_returnlink
的替换类,以便我们可以在下次定位禁用链接没有问题,但return true;
似乎不起作用!我错过了一些明显的东西吗?
jQuery(document).ready(function(){
$("a.nav_hidepanel").click(function(e){
e.preventDefault();
$("#panel").animate({marginLeft:"-547px"}, 500 );
$(this).removeClass('nav_hidepanel');
$(this).addClass('nav_returnlink');
});
$("a.nav_returnlink").click(function(){
return true;
});
});
答案 0 :(得分:4)
由于元素在第一次点击后会有nav_returnlink
类,只需检查它的存在:
jQuery(document).ready(function(){
$("a.nav_hidepanel").click(function(e){
//This will return true after the first click
//and preventDefault won't be called.
if(!$(this).hasClass('nav_returnlink'))
e.preventDefault();
$("#panel").animate({marginLeft:"-547px"}, 500 );
$(this).removeClass('nav_hidepanel');
$(this).addClass('nav_returnlink');
});
});
答案 1 :(得分:4)
以下是您编码无效的原因的简短说明:
这是一个可能的解决方案
jQuery(document).ready(function(){
$("a.nav_hidepanel").click(function(e){
e.preventDefault();
$("#panel").animate({marginLeft:"-547px"}, 500 );
$(this).removeClass('nav_hidepanel');
$(this).addClass('nav_returnlink');
$(this).unbind('click'); //unbind the click event so this is not called again
});
$("a.nav_returnlink").live(function(){ //use a live event to bind to this element, that is available in the future
return true;
});
});
另一种解决方案可能是在第一个回调中绑定新的click事件:
jQuery(document).ready(function(){
$("a.nav_hidepanel").click(function(e){
e.preventDefault();
$("#panel").animate({marginLeft:"-547px"}, 500 );
$(this).removeClass('nav_hidepanel');
$(this).addClass('nav_returnlink');
$(this).unbind('click');
$(this).click(function(){
//do whatever you like to do
});
});
});
答案 2 :(得分:1)
尝试使用jquery
在肝功能中添加click事件$("a.nav_returnlink").live("click",function(){
return true;
});
答案 3 :(得分:0)
为什么不使用计数器?
var clickCount = 0;
$("a.nav_hidepanel").click(function(e){
if(clickCount == 0) {
e.preventDefault();
$("#panel").animate({marginLeft:"-547px"}, 500 );
}
clickCount++;
});
答案 4 :(得分:0)
你总是可以取消绑定事件处理程序....
var clickCancel = function(event) {
event.preventDefault();
$(this).unbind("click",clickCancel);
$("#panel").animate({marginLeft:"-547px"}, 500 );// you add your animation in this function, it will only be called on the first click..
};
$("a.nav_hidepanel").bind("click", clickCancel);
答案 5 :(得分:0)