-1

好的,所以需要通过 jquery 更改链接。下面的代码工作正常,但它会立即起作用。我需要该链接仅在下一次单击时变为活动状态,而不是在当前单击时变为活动状态。希望这有意义吗?

任何帮助表示赞赏。

 $("#m-menu").click(function(){
$("#menu").animate({right: 0}, 500, "easeInOutCirc");
$(this).text($(this).text() == 'HOME' ? 'HOME' : 'HOME');
$(this).attr('href', 'http://backtohomepage.com');
 });


编辑:感谢所有的答案家伙 - 它不像每隔一个点击解决方案那么简单,并且非常抱歉第一次没有更清楚。这是源页面(为了更好地说明我的要求,我没有应用上面的 .attr 代码):http: //joinersart.co.uk/mtest

基本上,当用户单击左/右箭头来导航图库时,您会看到菜单栏缩小。为了取回它,您单击“菜单”。再次退出后,“MENU”文本变为“HOME”并具有新功能 - 链接到主页。当然,如果您再次单击左/右箭头,它会切换回“MENU”并将其功能更改回扩展菜单栏。所以基本上这个链接有两个功能(或者作为主页链接 - “HOME”,或者作为菜单栏扩展器 - “MENU”),具体取决于菜单栏是突出还是隐藏。

当我尝试应用上述 .attr 代码时,会发生这种情况 - 用户单击“菜单”链接,而不是菜单栏展开,他们立即被带到主页。所以它太快激活链接 .click 功能被执行。我需要它做的是展开菜单栏并首先将文本从“MENU”更改为“HOME”。只有当用户单击它时,他们才会进入主页。

4

4 回答 4

3
$('#m-menu').click(function () {
    // Do the work here
    $(this).unbind('click');
    $(this).click(function () {
          $(this).attr('href', 'http://backtohomepage.com');
    })
})
于 2012-09-24T16:39:08.203 回答
1

你可以这样做:

$("#m-menu").one('click', function (){
    $("#m-menu").click(function(){
        $("#menu").animate({right: 0}, 500, "easeInOutCirc");
        $(this).text($(this).text() == 'HOME' ? 'HOME' : 'HOME');
        $(this).attr('href', 'http://backtohomepage.com');
    });
});

http://api.jquery.com/one/

于 2012-09-24T16:39:21.440 回答
0

您是否希望每次点击都发生一次点击?

如果是这种情况,那么你可以这样做

$(function() {
    var counter = 0;
    $("#m-menu").click(function(){
        counter ++;
        if( counter % 2 == 0){
            $("#menu").animate({right: 0}, 500, "easeInOutCirc");
            $(this).text($(this).text() == 'HOME' ? 'HOME' : 'HOME');
            $(this).attr('href', 'http://backtohomepage.com');
        }
     }); 

 });

这将确保您的代码在每次点击时都被执行

于 2012-09-24T16:42:12.863 回答
0

你是这个意思 ?

var nbclicks = 0;
$("#m-menu").click(function(){
     $("#menu").animate({right: 0}, 500, "easeInOutCirc");
     if (nbclicks++==1) {
          $(this).text($(this).text() == 'HOME' ? 'HOME' : 'HOME');
          $(this).attr('href', 'http://backtohomepage.com');
     }
 });
于 2012-09-24T16:38:01.760 回答