存储价值并在javascript中重用它

Store value and reuse it in javascript oops

本文关键字:javascript 存储      更新时间:2023-09-26

我目前有 3 个div,它可以超过三个,每个div 都有一个锚标签,锚标签具有单击功能以在同一父级中打开UL。 我想要的是我可以打开UL并关闭它们而不会影响其他一个。我已经制作了一个带有 oops 概念的功能,但它没有按我想要的方式工作。需要单击两次即可获得下一个锚标记。可以通过糟糕的逻辑来完成,或者我们必须选择另一种方式。小提琴

$(function(){
    function get(){
        this.a=1;
        this.show= function(a){     
            $(this).parent().find('ul').slideDown()
        };
        this.hide= function(a){
            $(this).parent().find('ul').slideUp()
        }
    }
    var n= new get();
    $('a').click(function(){
        if(n.a){
            n.show.call(this)
            n.a=0;
        }
        else{
            n.hide.call(this)
            n.a=1;
        }
    });
}); 

你可以做你想做的事:

$('a').click(function(){
    $(this).parent().find('ul').slideToggle()
});

小提琴:http://jsfiddle.net/2kbbgvts/1/

编辑:此外,以您尝试的方式执行此操作的一种方法是使用闭包:

$('a').each(function(){
    var anchor = $(this);
    var shown = false;
    function toggle(){
        if(shown) anchor.parent().find('ul').slideUp()
        else $(this).parent().find('ul').slideDown()
        shown = !shown;
    }
    anchor.click(toggle);
});

这只是为了演示如何完成这样的事情。在这种情况下,使用滑动切换和淡入淡出切换要简单得多。http://jsfiddle.net/2kbbgvts/2/