Javascript函数不止一次调用

时间:2014-04-18 14:33:19

标签: javascript jquery html

我在我的项目中使用了jquery。我需要使用jquery在两行之间插入几行。这对我来说似乎很棘手所以我使用hide()和show()函数来显示单击时的行。但是,需要的是,在第一次单击时,它显示额外的行,在第二次单击时,额外的行应该隐藏。

为此我写了一个像这样的javascript函数:

activityDetailTableExpand: function (aData, ref) {
    var indexOfClick = ref.parentElement.rowIndex;
    console.log(indexOfClick);
    if (aData[6] > 1) {
        if (!$("#activityDetailTable").find("tbody tr").eq(indexOfClick + 1).is(":visible")) {
            for (var j = 0; j < aData[6]; j++) {
                $("#activityDetailTable").find("tbody tr").eq(indexOfClick + j).show();
            }
        } else {
            for (var j = 0; j < aData[6]; j++) {
                $("#activityDetailTable").find("tbody tr").eq(indexOfClick + j).hide();
            }
        }
    }
    console.log(aData);
},

这里参数aData将包含表中显示的行的内容。 ref将具有被单击的确切元素。 现在这个逻辑适用于一个表行,而另一个这个代码执行两次。控件从jquery.js文件返回到我的文件。因此,一旦显示,表行在第二次执行后再次被隐藏。我不确定这有什么问题。

编辑:

这是将点击绑定到我的函数的代码:

    bindClick : function(tableId,tableName,dialogId){
            if(tableId=='approvals-table'){
                $("#"+tableId+" tbody tr").on("click", function(event){
                    var aData = tableName.fnGetData(this);
                    var functionMap={
                            'approvals-table': function(){com.impetus.isas.getDeviceForApprove(aData);},
                        };
                    functionMap[tableId].call(this);
                    com.impetus.isas.openDetailDialog(dialogId);
                      }).css({
                          'cursor' : 'pointer'
                      });
            }else{
                $("#"+tableId+" tbody tr").find('td:gt(0)').on("click", function(event){
                    var aData = tableName.fnGetData(jQuery(this).parent('tr')[0]);
                    var functionMap={
                            'users-table': function(){com.impetus.isas.getUserDetail(aData[0]);},
                            'devices-table': function(){com.impetus.isas.getDeviceDetail(aData[0]);},
                            'approvals-table': function(){com.impetus.isas.getDeviceForApprove(aData);},
                            'activityDetailTable': function(){com.impetus.isas.activityDetailTableExpand(aData, this);},
                        };
                    functionMap[tableId].call(this);
                    com.impetus.isas.openDetailDialog(dialogId);
                      }).css({
                          'cursor' : 'pointer'
                      });
            }
        },

在我的情况下,其中一个activityDetailTable被称为

0 个答案:

没有答案