jquery - 我想在单击行中的按钮时取消行上的事件处理程序

标签 jquery modal-dialog datatables

我正在使用数据表并设置了一个事件处理程序,以便当单击一行时,它会打开另一个页面。但是,每一行都包含一个按钮,该按钮将打开一个模式对话框。我正在尝试在按钮上设置一个单击处理程序,以便在按下按钮时取消新页面事件并打开模式。这是我的代码:

$('#table_id tbody').on('click', 'tr', function() {
    var root = location.protocol + '//' + location.host;
    window.location.href = root+'/path';
});

$('#ModalBtn').click(function() {
    $("#table_id tbody").unbind();
});

更新: 这是脚本的其余部分。我认为问题的原因可能是数据表变量。如果我删除它,事件处理程序就会正常工作,就像 Amin 的演示一样:

var searchTable = $('#table_id').dataTable({
    "ajax": "array.php",
    "aoColumns": [ 
        null,
        null,
        null,
        null,
        {
            "mData": null,
            "bSortable": false,
            "mRender": function(data, type, full) {
                return '<button id="ModalBtn" class="btn" data-toggle="modal" data-target="#myModal">Add</button>';
            }
        }
    ]
} );

最佳答案

原因如下:元素 ID必须是唯一的。 $('#ModalBtn').click(function() { 仅将事件处理程序绑定(bind)到第一个“添加”按钮。

改变

return '<button id="ModalBtn" class="btn btn-inverse btn-xs" data-toggle="modal" data-target="#myModal">Add</button>';

return '<button class="ModalBtn btn btn-inverse btn-xs" data-toggle="modal" data-target="#myModal">Add</button>';

代码如下所示:

Updated fiddle .

var buttonClicked = false;

$('#table_id tbody').on('click', 'tr', function()
{
    if (!buttonClicked)
    {
        alert('tr clicked!');
    }
    else
    {
        buttonClicked = false; //it is important, do not omit this line
    }
});

$('.ModalBtn').click(function()
{
    alert('Button is clicked');
    buttonClicked = true;
});

更新。对于动态创建的按钮,可以使用委托(delegate)事件处理程序:

$('#table_id tbody').on('click', '.ModalBtn', function()
{
    alert('Button is clicked');
    buttonClicked = true;
});

关于jquery - 我想在单击行中的按钮时取消行上的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26284158/

相关文章:

javascript - 在 jQuery UI Datepicker 中滚动时间选择器?

javascript - 使用模态从父作用域调用函数( Angular )

javascript - 谷歌地图标记点击,显示模态

javascript - JQuery DataTables - 不显示数据

javascript - 如何使用 javascript/jquery 在打印页面上设置 div 内容的样式?

javascript - 如何在获取 json 条目时控制它

angular - 在 Angular 2/material 的对话框模式中禁用自动对焦

jquery - Bootstrap 无法在 Internet Explorer 中呈现

javascript - Datatables.net 选择表上的所有行,包括未显示的行

javascript - CSS 完全加载后运行 Javascript