代码之家  ›  专栏  ›  技术社区  ›  Mike

将getNext()与Mootools一起使用

  •  0
  • Mike  · 技术社区  · 14 年前

    我想在mootools 1.11中做一个自动完成程序。一切都很好,但我不能确定

    this.selectel.getNext()
    

    是空的或其他的。Fixbug为通过GETNEXT()输出的不存在元素i的每个元素和[null ]输出[LI];

    我看到有些人正在做:

    if(this.selectel.getNext()) {...
    

    但这在这里不起作用,因为我总是得到空对象。一定是发生了什么蠢事。。。

    下面是一些解决问题的代码:

    this.selectel = $$('ul.results').getFirst();
    
    ...
    
    onCommand: function(e, mouse) {
        if (e.key && !e.shift) {
    
            switch (e.key) {
                case 'up':                  
                    this.selectel.getPrevious().addClass('active');
                    if(this.selectel) this.selectel.removeClass('active');
                    this.selectel = this.selectel.getPrevious();
                    e.stop(); 
                return;
    
                case 'down':
                    var test = this.selectel.getNext();
                    console.log(typeof(test));
    
                    if(this.selectel.getNext() != null) {  // not working
    
                        this.selectel.getNext().addClass('active');
                        if(this.selectel) this.selectel.removeClass('active');
                        this.selectel = this.selectel.getNext();
                    }
                    e.stop(); 
                return;
    
            }
        }
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   rahim asgari    14 年前

    您正在调用getNext()两次。

    替换这些行:

    if(this.selectel.getNext() != null) {  // not working
       this.selectel.getNext().addClass('active');
       if(this.selectel) this.selectel.removeClass('active');
       this.selectel = this.selectel.getNext();
    }
    

    使用:

    if(el = this.selectel.getNext() != null) {  // not working
       el.addClass('active');
       if(this.selectel) this.selectel.removeClass('active');
       this.selectel = el;
    }