我的应用中有很多链接,我需要启用/禁用点击事件给他们,但仍然希望允许悬停和其他事件。
所以我需要一种方法(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,但对我没用。有什么想法吗?
现在这是我的功能和
答案 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
}