如何使用jquery在<img/>中禁用然后重新启用onclick事件

时间:2016-01-19 07:15:50

标签: jquery html image javascript-events onclick

我使用的是图像而不是按钮,现在我想在某些情况下禁用onclick()事件,因为我们禁用了按钮。我尝试了很多方法,但没有用。以下是我的所作所为。

<img title="Ok" class="mtbtn"id="upd_1" onclick="add_edited('1','MM');" src="/project/images/green_ok.gif" border="0">

jquery代码是:

$("#upd_1").css('opacity','0.5');
$("#upd_1").unbind("click");

也尝试了

$("#upd_1").css('pointer-events','none');document.getElementById('upd_1').style.pointerEvents = 'none';

任何解决方案?

5 个答案:

答案 0 :(得分:0)

试试这个:

$("#upd_1").on('click',function(e){
   e.preventDefault();
});

答案 1 :(得分:0)

一个提示是,您可以为您的点击事件添加后缀,这样您就可以确定它是您影响的唯一事件。绑定:

$('#elementId').on('click.myevent', function () {
    // your code
}

取消绑定:

$('#elementId').off('click.myevent');

答案 2 :(得分:0)

不进行绑定或取消绑定click事件,但如何为图像创建遮罩。当您希望图像可以点击时隐藏蒙版,否则显示它。

img onclick="alert('clicked')" src="http://lh3.googleusercontent.com/mjejVTJKT4ABNKq2HGlkDs36f-QvzI2hKFER098vBIgiAoZ2H-SN5QPvFaZEVDZRxfujrS6pszZ_J-_di2F57w0IFE3KAciDwGAh-9RcCA=s660" alt="" />
<div id="mask"></div>

<script>
$('#mask').hide();
$('#disable').click(function() {
  $('#mask').show();
});
$('#enable').click(function() {
  $('#mask').hide();
});
</script>

尝试使用Plnkr:Plnkr

答案 3 :(得分:0)

试试这种方式。将参数添加到两个属性中(例如data-a和data-b)。

<img title="Ok" class="mtbtn"id="upd_1" data-a="1" data-b="MM" src="/project/images/green_ok.gif" border="0">

然后以这种方式更改您的JavaScript:

$(document).ready(function(){
    $("#upd_1").bind("click", function(){
        var a = $(this).data("a");
        var b = $(this).data("b");

        // Code here

        $(this).unbind("click");
    });
});

Here结果。

替代方案是:

var semaphore = true;
function add_edited (a, b) {
    if (semaphore) {
        semaphore = false;

        // Code here
    }
}

创建一个信号量来管理点击代码的执行。

答案 4 :(得分:0)

我了解您的问题,无需unbind()并重新bind() onclick事件,您只需使用removeAttr()和{{删除并重新添加onclick属性即可1}}

attr()

JQuery:

<img title="Ok" class="mtbtn"id="upd_1" onclick="add_edited('1','MM');" src="/project/images/green_ok.gif" border="0">

重新添加onclick事件执行以下操作:

$("#upd_1").css('opacity','0.5');
$("#upd_1").removeAttr('onclick');

这就是你需要做的一切。