Javascript 限制datatables的第一个表行
您好,我目前正在处理datatables,我编写了一个代码,当一个表行被选中时,将调用一个特定的函数 问题是,当我单击表格标题的表格行时,它也会执行该功能(它不能) 下面是我的代码片段,当我单击表行时,将有一个名为的函数Javascript 限制datatables的第一个表行,javascript,jquery,datatable,Javascript,Jquery,Datatable,您好,我目前正在处理datatables,我编写了一个代码,当一个表行被选中时,将调用一个特定的函数 问题是,当我单击表格标题的表格行时,它也会执行该功能(它不能) 下面是我的代码片段,当我单击表行时,将有一个名为的函数 $('#response-contact-container').on('click', 'tr', function(){ var table = $('#response-contact-container').DataTable(); var da
$('#response-contact-container').on('click', 'tr', function(){
var table = $('#response-contact-container').DataTable();
var data = table.row(this).data();
$('#edit-contact-settings').modal('hide');
$('.modal-backdrop').remove();
var community_contacts = ['c_id','firstname','lastname','prefix','office','sitename','number','rel'];
var employee_contacts = ['eid','firstname','lastname','nickname','birthday','email','numbers','grouptags'];
var counter = 1;
var container = document.getElementById("contact-settings-wrapper");
while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}
for(var i=1; i< data.length; i++) {
var label = document.createElement("label");
var input = document.createElement("input");
if (data[0].charAt(0)=="c") {
var t = document.createTextNode(community_contacts[i].capitalize());
label.appendChild(t);
container.appendChild(label);
input.type = "text";
input.name = community_contacts[i];
input.className = "form-control";
input.value = data[i];
container.appendChild(input);
container.appendChild(document.createElement("br"));
} else {
var t = document.createTextNode(employee_contacts[i].capitalize());
label.appendChild(t);
container.appendChild(label);
input.type = "text";
input.name = community_contacts[i];
input.className = "form-control";
input.value = data[i];
container.appendChild(input);
container.appendChild(document.createElement("br"));
}
console.log(data[i]);
counter++;
}
$('#edit-contact').modal('show');
});
$(“#响应联系人容器”)。在('click','tr',function()上{
var table=$(“#响应联系人容器”).DataTable();
var data=table.row(this.data();
$(“#编辑联系人设置”).modal('hide');
$('.modal background').remove();
var community_contacts=['c_id','firstname','lastname','prefix','office','sitename','number','rel'];
var employee_contacts=['eid'、'firstname'、'lastname'、'昵称'、'birth'、'email'、'number'、'grouptags'];
var计数器=1;
var container=document.getElementById(“联系人设置包装”);
while(container.hasChildNodes()){
container.removeChild(container.lastChild);
}
对于(变量i=1;i
我希望标头不能执行onclick-in-jQuery下的函数,但我不希望它被禁用,因为我希望使用datatables内置功能对单元格进行排序
谢谢我将您的问题解释为:当我单击表行时,当且仅当该行包含
元素而不是
元素时,我是否可以调用单击处理程序,即仅当该行是非标题行时
要完成此操作,请使用jQuery.has()
选择器。特别是,在代码中,而不是
...on('click', 'tr', ...
使用
在下面的示例中,所选元素的currentTarget
结果显示,单击的当前目标确实是行,而不是单元格。此外,它调用处理函数(或不调用),如下所示:
- 当您单击普通数据行时,即包含所有
单元格的行 - 当您单击普通标题行,即包含所有
单元格的行时,则不会出现这种情况 - 当您单击一个格式错误的行(不适当地)同时包含
和
行时
单元格,单击处理程序仍将启动,因为您正在单击至少包含一个
单元格的行中的单元格。这永远不应该是你想要的,但它从实际被选择的角度说明了正在发生的事情
var计数器=0;
$('#myTable')。在('click','tr:has(td')上,函数(e){
console.log(例如currentTarget);
});
$('#myTable')。在('click','tr',函数(e)上{
计数器+=1;
日志(计数器+‘点击’);
});代码>
表格{
边界塌陷:塌陷;
}
td,th{
边框:黑色实心1px;
填充:0.5em;
文本对齐:左对齐;
}
正常标题行-单元格第1行
正常标题行-单元格第2行
格式不正确(混合)的第1行单元格
格式错误(混合)行-单元格#2-td
正常数据行-单元格#1-td
正常数据行-单元格#2-td
我将您的问题解释为:当我单击表行时,当且仅当该行包含
元素而不是
元素时,我是否可以调用单击处理程序,即仅当该行是非标题行时
要完成此操作,请使用jQuery.has()
选择器。特别是,在代码中,而不是
...on('click', 'tr', ...
使用
在下面的示例中,所选元素的currentTarget
结果显示,单击的当前目标确实是行,而不是单元格。此外,它调用处理函数(或不调用),如下所示:
- 当您单击普通数据行时,即包含所有
单元格的行
- 当您单击普通标题行,即包含所有
单元格的行时,则不会出现这种情况
- 当您单击一个格式错误的行(不适当地)同时包含
和
行时
您不应该以最后一种方式形成表格行。但是,该示例显示了选择器的工作方式。具体来说,即使您单击该行中的
单元格,单击处理程序仍将启动,因为您正在单击至少包含一个
单元格的行中的单元格。这永远不应该是你想要的,但它从实际被选择的角度说明了正在发生的事情
var计数器=0;
$('#myTable')。在('click','tr:has(td')上,函数(e){
console.log(例如currentTarget);
});
$('#myTable')。在('click','tr',函数(e)上{
计数器+=1;
日志(计数器+‘点击’);
});代码>
表格{
边界塌陷:塌陷;
}
td,th{
边框:黑色实心1px;
垫