找不到问题:javascript / jQuery

时间:2011-08-08 17:03:20

标签: javascript jquery

我有一个在链接的KeyDown事件上调用的以下函数。 基本上我正在尝试向下移动表(应用程序将其称为ListBox)。在第一个循环中,我要做的是看看他们是否先使用鼠标在表格中单击,我希望找到行值,然后从那里操作类(突出显示)。

不幸的是,现在我甚至没有那么远。当屏幕加载并按下向下按钮时,当前行(0)的类更改以及行(1)。但是在下一个向下按钮上按下tr_lst表示它未定义。然后关闭循环然后我得到各种各样的错误。

我试图实现jsfiddle,但是,我无法让它工作。但是你可以看到我试图实现的一些代码。

function xKeyDown(event,ListBoxVal){


var tr_lst = $('#' + ListBoxVal).find('tr[class="LUGridRowHighlight"]');
var iCount = 0;

for (iCount = 0; iCount <= $('#' + ListBoxVal + ' tr').length; iCount++){
    if($('#' + ListBoxVal + ' tr:eq('+iCount+')').attr('id') == tr_lst.attr('id')){
        lstRow = iCount;
        break;
    }
}


if (event.keyCode == 40){
//arrow down
    if(parseInt(lstRow) < $('#' + ListBoxVal + ' tr').length)
    {
        if(parseInt(lstRow) == 0){
            document.getElementById(ListBoxVal).focus(); 
            lstRow +=1;

            document.getElementById($('#' + ListBoxVal + ' tr:eq('+parseInt(lstRow)+')').attr('id')).focus();
            $('#' + ListBoxVal + ' tr:eq('+parseInt(lstRow)+')').addClass('LUGridRowHighlight');
            $('#' + ListBoxVal + ' tr:eq('+parseInt(lstRow)+')').prev().removeClass('LUGridRowHighlight') .addClass('LUGridRow');

        }else{
            document.getElementById($('#' + ListBoxVal + ' tr:eq('+parseInt(lstRow)+')').attr('id')).focus();
            $('#' + ListBoxVal + ' tr:eq('+parseInt(lstRow)+')').addClass('LUGridRowHighlight');
            $('#' + ListBoxVal + ' tr:eq('+parseInt(lstRow)+')').prev().removeClass('LUGridRowHighlight') .addClass('LUGridRow');
            lstRow +=1;
        }
    }
...

更新

进一步研究后......当我多次单击向下箭头时,下面的代码会导致错误:

var tr_lst = $('#' + ListBoxVal).find('tr[class="LUGridRowHighlight"]');

当我尝试打印时, 'undefined'

我想知道因为我通过jQuery操作类我是否需要在查找的某处添加.live?我相信当元素被动态操作时,.live就会发挥作用。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

试试这个

function xKeyDown(event,ListBoxVal){

var $listBoxVal = $('#' + ListBoxVal);
var trs = $listBoxVal.find('tr');
var tr_lst = $listBoxVal.find('tr.LUGridRowHighlight');
var tr_lst_id = tr_lst.attr('id');
var iCount = 0;

for (iCount = 0; iCount <= trs.length; iCount++){
    if($listBoxVal.find('tr:eq('+iCount+')').attr('id') == tr_lst_id){
        lstRow = iCount;
        break;
    }
}


if (event.keyCode == 40){
//arrow down
    if(parseInt(lstRow) < $listBoxVal.find('tr').length)
    {
        if(parseInt(lstRow) == 0){
            $listBoxVal.focus(); 
            lstRow +=1;

            $("#"+$listBoxVal.find('tr:eq('+parseInt(lstRow)+')').attr('id')).focus();

           $listBoxVal.find('tr:eq('+parseInt(lstRow)+')').addClass('LUGridRowHighlight');

            $listBoxVal.find(' tr:eq('+parseInt(lstRow)+')').prev().removeClass('LUGridRowHighlight').addClass('LUGridRow');

        }else{
            $("#"+$listBoxVal.find('tr:eq('+parseInt(lstRow)+')').attr('id')).focus();
            $listBoxVal.find('tr:eq('+parseInt(lstRow)+')').addClass('LUGridRowHighlight');
            $listBoxVal.find('tr:eq('+parseInt(lstRow)+')').prev().removeClass('LUGridRowHighlight').addClass('LUGridRow');
            lstRow +=1;
        }
    }
...