2015-04-08 6 views
0

У меня есть фрагмент кода, который показывает div, как только вы нажимаете элемент меню, на этом пространстве есть разные divs, и то, что делает меню, скрывает ту, что была там раньше, и показывает новую одна, проблема в том, что когда я нажимаю на тот же элемент меню, он снова показывает текущий div, и я хочу прекратить это из-за этого, он должен показывать анимацию только в том случае, если она не является текущей, если ничего не должно произойти.JQuery stop show/hide on click

Вот фрагмент кода:

var curPage=""; 
$("#menu a").click(function() { 
    if (curPage.length) { 
     $("#"+curPage).hide("slide"); 
    } 
    curPage=$(this).data("page"); 
    $("#"+curPage).show("slide"); 
});  

А вот демонстрация того, как это теперь встречающийся: https://jsfiddle.net/Lfsvc1ta/

+0

вы хотите таким образом https://jsfiddle.net/Lfsvc1ta/1/? –

+0

Это все еще показывает анимацию, как только я нажимаю одну и ту же ссылку, я знаю, что я сбиваю с толку, спасибо, что нашли время ответить! – LLazzari

ответ

0

Просто добавьте дополнительную проверку, чтобы увидеть curPage ли такой же, как щелкнули странице.

var curPage; 
$("#menu a").click(function() { 
    var page = $(this).data("page"); 
    if (curPage && page != curPage) { 
     $("#" + curPage).stop().hide("slide"); 
    } 
    $("#" + page).stop().show("slide"); 

    curPage = page; 
}); 

Демо: Fiddle

+0

Спасибо, другие ответы тоже правильные, но я голосую за это, так как он также показал мне функцию .stop(), чтобы вырезать анимацию, когда я нажимаю на другую ссылку, это действительно здорово, и я не знал этого, Спасибо за ответ! – LLazzari

0

Проверьте, какие данные-страницы щелкнул первый братан.

var curPage=""; 
$("#menu a").click(function() { 
    var newPage = $(this).data("page"); 
    if (newPage !== curPage) { 
     $("#"+curPage).hide("slide"); 
     $("#"+newPage).show("slide"); 
     curPage = newPage; 
    }   
}); 
+0

Что вы пытаетесь сказать? – Kumar

+0

Исправлено .. спасибо Kumar –

0

Вы должны проверить, что было перед страницей, добавив переменную.

var curPage=""; 
$("#menu a").click(function() { 
    var page=$(this).data("page"); 
    if (curPage!=page && curPage.length) { 
     $("#"+curPage).hide("slide"); 
     curPage=$(this).data("page"); 
    } 
    $("#"+curPage).show("slide"); 
}); 

Как эта скрипка https://jsfiddle.net/7b1wh70h/

+0

Этот ответ также верен, спасибо, он дает мне представление о том, как справляться с подобными ситуациями, я полностью забыл об этом, я довольно новичок в программировании, спасибо, что нашли время ответить! – LLazzari