如何禁用和启用没有特定处理程序名称的click事件

时间:2015-01-07 14:57:31

标签: javascript jquery html

我的应用中有很多链接,我需要启用/禁用点击事件给他们,但仍然希望允许悬停和其他事件。

所以我需要一种方法(CSS / JS / jQuery)来禁用 Click事件。并且无需使用处理程序名称。 例如:

HTML:

<a href="#" onclick="runAll()" id="runAll">Run All</a>

JS - 调用disable函数:

disableElement('#runAll', "no sensors to record"); // call to the disable function

JS - 启用/禁用功能

//disable element (add disable class and unbind from click event)
function disableElement(element, tooltip) {
    $(element).addClass('ui-disabled');
    $(element).disableClick; // need this option!

    if (typeof tooltip != 'undefined' && tooltip != "")
        loadTooltip(element, tooltip);
}

//enable element (remove disable class and bind to click eventl
function enableElement(element) {
    $(element).removeClass('ui-disabled');
    $(element).prop("title", "");
    $(element).enableClick; // need this option!!
}

我试过了this,但对我没用。有什么想法吗?

现在这是我的功能和

5 个答案:

答案 0 :(得分:2)

使用JS:

$(element).attr('onclick', 'return false'); // disable
$(element).removeAttr('onclick'); // enable

HTML

<a href="http://www.google.com" onclick="return false">google</a>

答案 1 :(得分:0)

对你的元素使用'off'调用

$(element).off('click');

他们可以通过“开启”反弹

$(element).on('click', function(){
    //your handler
});

答案 2 :(得分:0)

您可以使用$el.off('click')停止针对特定事件的处理程序。

请注意,重新附加事件可能需要很长时间,因此最好在处理程序本身中使用标志来指导逻辑。像这样:

$el.click(function(e) {
    var $el = $(this);
    if ($el.data('click-disabled')) {
        e.preventDefault();
    } 
    else {
        // do your thing...
    }
}

然后,您可以通过设置data属性来禁用/启用处理程序逻辑:

$el.data('click-disabled', true);

答案 3 :(得分:0)

你有可能采取错误的做法吗? 如果有可能重新连接,为什么要删除处理程序?

让处理程序始终连接可能更合适,然后检查您认为意味着删除的任何条件

即。

$('#someThing').on('click', function () {

    if(!someConditionThatYouFeelShouldRemoveTheHandler){
        // do some code here

    }

});

这样你就不需要多次附加和重新连接

答案 4 :(得分:0)

回答2

$(document).ready(function() {
    $('.ui-disabled').click(function(e) {
        e.preventDefault();
    });
});

function disableElement(element, tooltip) {
    $(element).addClass('ui-disabled');
    // do nothing

    if (typeof tooltip != 'undefined' && tooltip != "")
        loadTooltip(element, tooltip);
}

//enable element (remove disable class and bind to click eventl
function enableElement(element) {
    $(element).removeClass('ui-disabled');
    $(element).prop("title", "");
    // do nothing
}