【问题标题】:Store value and reuse it in javascript oops存储价值并在 javascript oops 中重用它
【发布时间】:2014-08-27 19:23:59
【问题描述】:

我目前有 3 个 div,可以超过三个,每个 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;
        }
    });

}); 

【问题讨论】:

  • 那个小提琴链接是空的。
  • 您的意思是让您的 JSFiddle 链接仅转到 JSFiddle 站点还是设置了一个小提琴来查看此代码?
  • 我有编辑小提琴链接是jsfiddle.net/2kbbgvts

标签: javascript jquery oop


【解决方案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/

【讨论】:

  • 感谢您回答问题,您的回答工作正常,但是当我们使用 fadeIn 和 fadeOut 而不是 slideToggle 时,我们如何管理它
  • 我也是这样做的。或者也许在第一行使用$('a').on('click', function(){ 而不是$('a').click(function(){ - 只是个人喜好。
  • 要切换淡入淡出,只需将 slideToggle 更改为 fadeToggle。见:api.jquery.com/category/effects
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2014-03-25
  • 2018-10-31
  • 2013-04-01
  • 1970-01-01
  • 2014-09-26
  • 2017-08-14
相关资源
最近更新 更多