在迭代TD

时间:2017-02-09 16:06:05

标签: jquery

我有一个jQuery脚本,允许用户使用光标键从输入元素到表格中的输入元素。我在应该获得焦点的输入元素上指定样式类'tableInput'。 如果下一个TD有一个输入元素,那就可以正常工作。

我不是jQuery专家所以我只是尝试迭代TD,直到找到带有样式类的输入元素:

 jQuery(':input.tableInput').live("keyup",function(e){
var charPos = e.target.selectionStart;
var endPos = e.target.selectionEnd;
var strLength = e.target.value.length;
var prevPos = $(this).data('prevPos');
if(e.which==39){
    if(charPos==strLength && (prevPos ==null || prevPos == charPos)){
        var nextTd = $(this).closest('td').next();
        console.log("Next td",nextTd);
        var count = 0;
        while(nextTd){
            var comp = $(nextTd).find(':input.tableInput');
            console.log("Comp ",comp);
  // Returns the previous input component of the original td when no        //input can be found
            if(comp){
                comp.focus();
                break;
            }
            nextTd = $(nextTd).next();
            console.log("Next td",nextTd);

        }
        $(this).data('prevPos',null);
    }else{
        $(this).data('prevPos',charPos);
    }
}

问题是$(nextTd).find(':input.tableInput')在'nextTd'组件没有输入元素时返回原始输入组件。这是为什么?有没有更好的方法呢?

所以我想说我有一个包含4列的表格。第1列和第3列包含一个带有样式类tableInput的input元素。 当我在col1中单击输入上的右键时,会发生以下情况:

var nextTd = $(this).closest('td')。next()返回col2。 $(nextTd).find('input:tableInput')返回input1而不是null。

1 个答案:

答案 0 :(得分:0)

好吧,它只是表明我应该坚持后端; - )

find()将始终返回一个jQuery对象,以便进行检查 如果(comp)错误,当我这样做(comp.get(0))它似乎工作。