Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 限制datatables的第一个表行_Javascript_Jquery_Datatable - Fatal编程技术网

Javascript 限制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

您好,我目前正在处理datatables,我编写了一个代码,当一个表行被选中时,将调用一个特定的函数

问题是,当我单击表格标题的表格行时,它也会执行该功能(它不能)

下面是我的代码片段,当我单击表行时,将有一个名为的函数

    $('#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;
垫