我有一个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。
答案 0 :(得分:0)
好吧,它只是表明我应该坚持后端; - )
find()将始终返回一个jQuery对象,以便进行检查 如果(comp)错误,当我这样做(comp.get(0))它似乎工作。