仅当未禁用锚点时,jQuery附加事件

时间:2014-02-27 06:47:53

标签: jquery performance events

我试图附加和事件,然后检查锚标记是否被禁用然后不做任何事情,否则doSomething()
以下是我到目前为止所做的工作,结果符合预期;

<a href="#" disabled="true" class="btn btn-small btn-danger remove"><i class="icon-remove"></i></a>

这是我的jQuery;

acitivityListDataTable.find('tbody').on('click', 'tr td a.remove', function (e) {
                e.preventDefault();
                var $this = $(this);
                if ($this.attr('disabled')) {
                    return false;
                } else {
                    var link = $this.attr('href');
                    bootbox.confirm("Are you sure you want to delete this?", function (result) {
                        if (result) {
                            window.location.href = link;
                            //milestoneTable.fnDraw();
                        }
                    });
                }

            });


但是,我觉得它很好(或纠正我,如果我错了),如果禁用锚标记我甚至不应该附加事件;
所以,这是我尝试但它不起作用,点击事件仍在工作,即附加。

acitivityListDataTable.find('tbody').on('click', 'tr td a.remove:not(:disabled)', function (e) {
                e.preventDefault();
                var $this = $(this);
                    var link = $this.attr('href');
                    bootbox.confirm("Are you sure you want to delete this?", function (result) {
                        if (result) {
                            window.location.href = link;
                        }
                    });

            });

区别仅在于tr td a.remove:not(:disabled)
更新 我把锚变成了这个;

<a href="#" disabled="disabled" class="btn btn-small btn-danger remove"><i class="icon-remove"></i></a>

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望阻止将点击事件绑定到具有“已禁用”属性的任何<a>标记(或者,不选择这些元素)

我能够在这里实现这一目标:http://jsfiddle.net/LL8yd/

相关代码是:

$('div').on('click', ':not(a[disabled])', function(){ /*..*/ });

答案 1 :(得分:0)

@Jack是对的,我调整代码如下,它正在工作:)

acitivityListDataTable.find('tbody').on('click', 'tr td a.remove:not([disabled])', function (e) {
            e.preventDefault();
            var $this = $(this);
                var link = $this.attr('href');
                bootbox.confirm("Are you sure you want to delete this?", function (result) {
                    if (result) {
                        window.location.href = link;
                        //milestoneTable.fnDraw();
                    }
                });

        });