在Mootools中使用getNext()

时间:2010-09-29 16:43:44

标签: javascript mootools

我正试图在mootools 1.11中进行自动完成。一切正常,但我不能检查是否

this.selectel.getNext()

是null或者其他什么。 Firebug为每个元素输出[li],为通过getNext()输出的非现有元素输出[null];

我看到有些人正在做:

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 个答案:

答案 0 :(得分:0)

你要两次调用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;
}