存储价值并在javascript中重复使用它

时间:2014-08-27 19:23:59

标签: javascript jquery oop

我目前有3个div,它可以超过3个,每个div都有一个锚标记,锚标记具有点击功能,可以在同一个父级中打开UL。我想要的是我可以打开UL并关闭它们而不影响其他人。我已经用oops概念创建了一个函数,但它没有按我的意愿工作。下一个锚标记需要两次点击。可以通过oops逻辑完成,或者我们必须选择其他方式。 fiddle

$(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;
        }
    });

}); 

1 个答案:

答案 0 :(得分: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);
});

这只是为了演示如何这样的事情。在这种情况下,使用slideToggle和fadeToggle更加简单。 http://jsfiddle.net/2kbbgvts/2/