2011-02-28 18 views
0

我有事件onClick=window.location.href = 'some url stored in div使用Jquery禁用div

Div包含图像以及文本。

我想表明使用这种div预览,但要点击禁用这个div,因为它正在采取到指定的位置。

我想它是这样的:

("#preview").disabled= true; 
("#preview").disabled= 'disabled'; 
("#preview").children().disabled= true; 
("#preview").children().disabled= 'disabled'; 

但这一切在firefox 3.6工作。有人请帮忙解决这个问题。

+1

所以你已经设置了一个“点击”处理程序,但你希望它不起作用 - 为什么不去掉那个“onclick”属性呢?你写的这些东西都不会起作用,因为它们都是错的。你不能只是禁用这样的元素;它没有任何意义。 – Pointy 2011-02-28 13:41:34

+0

我想用这个内联的onclick事件将html保存在db中。但是当我预览它时,我希望它被禁用。我怎样才能做到这一点? – Shwetanka 2011-02-28 13:55:16

回答

3

如果要禁用所有div的控制,你可以尝试在div添加一个透明的股利禁用,你要让它无法点击,还可以使用fadeTo创建禁用外观。

试试这个。

$('#DisableDiv').fadeTo('slow',.6); 
$('#DisableDiv').append('<div style="position: absolute;top:0;left:0;width: 100%;height:100%;z-index:2;opacity:0.4;filter: alpha(opacity = 50)"></div>'); 
3
$('#preview').unbind('click'); 
+0

这不适用于内联处理程序。 – jAndy 2011-02-28 13:50:01

1

首先,在使用像jQuery库为什么要使用联事件处理程序。以不引人注目的方式进行操作,并用Javascript绑定所有事件处理程序。

其实,这也将帮助你解决问题,因为这样你可以解除绑定重新绑定事件处理程序很容易:

function myclick() { 
    window.location.href = 'some url'; 
} 

// bind the click event handler 
$(function() { 
    $('#preview').bind('click', myclick); 
}); 

// unbind the click event handler 
$('#preview').unbind('click', myclick); 

这样的话,你可以添加和删除功能,但它不会改变div节点的任何可见变化。您还必须添加一个风格css类以让用户知道某些更改。

参考:.bind().unbind()

+0

其实它是固定的HTML代码,我只是在替换一些东西。一种模板和这个html被保存在数据库中。我想要在div中预览时禁用所有点击和此事件。但是当我真的在网站上使用它时,这个事件应该在那里。这个怎么做? – Shwetanka 2011-02-28 14:01:01

0

你应该能够简单地做:

// Unbind all click events for all elements 
("#preview *").unbind("click"); 

你可以做的另一件事是什么情态动词经常做的背景:在其他内容之上放置不可点击的div。

0
$("#preview div").onClick = function(){}; 
0

尝试

$('#the_div_id *').unbind('click');