【问题标题】:Bootstrap Data Table on Click body点击正文上的引导数据表
【发布时间】:2025-12-01 03:20:04
【问题描述】:

我让这段代码运行良好。如果我使用此代码if ($(e.target).is("#checkId_ i"))if ($(e.target).is("[id^=checkId_] i")),它将跳过正文单击中的if 语句。我只是从我朋友那里看到了整个代码,但我问他,他也不知道是什么原因。

下面的代码可以正常工作而我的测试代码不能正常工作的原因是什么?

数据表

columns:
    [
      { data: "testID", title: "Test Click Button", searchable: false, orderable: false, sClass: "alignCenter",
            "mRender": function (data) {
             return '<button type="button" class="btn btn-info btn-xs action" id="checkId_' + data + '"><i class="fa fa-dollar fa-fw action"></i></button>'
            + '&nbsp; <button type="button" class="btn btn-danger btn-xs action" id="checkId2_' + data + '"><i class="fa fa-dollar fa-fw action"></i></button>';
            }
        }
    ]

正文点击

$('#tbltest tbody').on('click', 'tr', function (e) {
    debugger;
    if ($(e.target).is("[id^=checkId_],[id^=checkId_] i")) {
        alert("Button 1 is Click");
    } else if ($(e.target).is("[id^=checkId2_],[id^=checkId2_] i")) {
        alert("Button 2 is Click");
    }
    return;
});

【问题讨论】:

    标签: javascript jquery twitter-bootstrap datatables


    【解决方案1】:

    我建议你使用最接近的:

    $('#tbltest tbody').on('click', 'tr', function (e) {
        e.preventDefault();
        if ($(e.target).closest("[id^=checkId_]").length) {
            alert("Button 1 is Click");
        } else if ($(e.target).closest("[id^=checkId2_]").length) {
            alert("Button 2 is Click");
        }
    });
    

    【讨论】:

    • 我尝试了您的代码并且工作正常。我尝试像 (#checkId2_) 这样更改 id 并且无法正常工作。有什么原因吗?
    • 你有id为#checkId2_的按钮吗?
    • # 指的是ID 对吗?上面的错字。 ("#checkId2_")
    • 我不明白你有什么问题上面的代码应该可以使用 $("#checkId2_") 选择器将不起作用,因为你没有一个 id 为 checkId2_ 的 div 你有一个以 checkId2_ 开头的 id,我在最近的函数中使用的选择器将选择以该字符串开头的元素