2

单击任何链接时,该脚本都可以正常工作。如果再次单击相同的链接,我希望它阻止执行显示/隐藏脚本。我在这个网站和其他网站上发现了一些东西可以尝试使用 .unbind 是最有前途的,但我的功能以 . 开头$(this).click(function (),并且取消绑定会杀死一切。我想不出一种重组代码的方法,因此它会toggleDiv在点击之前检查点击toggleDiv之后的内容,看看它们是否相同并删除脚本。

代码笔: http ://codepen.io/jpscoggan/pen/gcHbK

这是我的js代码:

//show hide
(function ($) {

    $.fn.showHide = function (options) {

        //default vars for the plugin
        var defaults = {
            speed: 200,
            easing: 'swing'
        };
        var options = $.extend(defaults, options);

        $(this).click(function () {
            $('.toggleDiv').slideUp(options.speed, options.easing);
            // once the button is clicked, the clicked div (.toggleDiv) slides up  
            var toggleDiv = $(this).attr('rel');
            // reads rel attribute of clicked link / which div id to toggle 
            $(toggleDiv).slideToggle(options.speed, options.easing);
            // toggle show/hide the correct div + speed and easing

            e.preventDefault();
        });
    };
})(jQuery);

$('.show_hide').showHide({
    speed: 200,
    // speed you want the toggle to happen             
});
4

2 回答 2

1

解决此问题的一种简单方法:向您刚刚单击的类添加一个类,然后如果该链接处于活动状态,则禁止第二次单击。

密码笔

$('.show_hide section').click(function() {
    if ($(this).hasClass('active')) return false;
    //use if you want to allow a click after switching sections
    $('.active').removeClass('active');
    $(this).addClass('active');
});
于 2013-07-18T15:47:51.723 回答
0

使用 jQuery.one(); 功能。此函数的回调只到达一次,并在调用后自动删除:

$(this).one('click', clickHandlerFunction);
于 2013-07-18T16:03:10.600 回答