我在我的项目中使用了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被称为