如何在JavaScript中禁用/启用img元素的自定义单击事件

时间:2010-12-01 23:02:29

标签: javascript jquery

我有一个ASP.NET datepicker控件(没有可用的源代码),它生成一个图像元素,单击该元素时会显示一个日历。我想通过JavaScript禁用或启用图像。当我将'disabled'属性添加到img元素时,页面中的某些脚本总是处于繁忙状态,页面永远不会完成渲染。我猜是禁用属性会以某种方式引起冲突。

我现在的下一个尝试是禁用ASP.NET控件不加掩饰地添加的自定义单击事件。如何禁用click事件?如何重新启用它以使img正常工作。我也在使用jQuery 1.4。

4 个答案:

答案 0 :(得分:0)

var $img = $('img#yourid'),
    handler = $img.get(0).onclick; // previous click handler
// unbind
$img.unbind('click').click(function(){
    alert('new click');
});
// rebind
$img.unbind('click').click(handler);

您可能还需要检查其他事件(mousedown mouseup等)。

答案 1 :(得分:0)

我在这里有一个示例,它将所有点击事件交换为隐藏的div,然后再次返回以重新启用:

http://jsfiddle.net/Jbs9V/

可能有一些快捷方式可以做到这一点,但这有效。同样,您可以将点击处理程序存储在全局变量中并从中加载:

http://jsfiddle.net/8ZKJR/

答案 2 :(得分:0)

我认为这个bug可能会发生,因为datepicker使用文本控件来做它的东西,但如果控件被禁用,则datepicker无法继续,但是你可以使用其他属性来做几乎相同的事情,使用属性只读标签:

readonly="readonly"

您可以在html输入中使用readonly属性。

希望这会有所帮助。

答案 3 :(得分:0)

您可以使用unbind()使用jquery删除任何自定义事件处理程序。