以这种方式设置onclick功能有什么区别:
obj.onclick=new Function('functionname')
和
obj.onclick=function(){ functionname();};
如何设置onclick事件删除所有附加的previrius? (使用jquery或简单的javascript) 我尝试这样的事情:
$(OBJ).unbind( '点击');
$(obj).click(function(){ 使用functionName(); });
但是unbind似乎甚至删除了下一个附加事件。 谢谢 编辑:
我使用jquery设置click事件:
function ON(){
$('#makecorr').unbind('click');//i unbind for some reason..
$('#makecorr').click(function() { OFF(); });
}
function OFF(){
$('#makecorr').unbind('click');//i want to remove prev attached fun
//and replace it with new event
$('#makecorr').click(function() { ON(); });
}
这对我不起作用,当我点击对象'makecorr'它进入循环时,如果我发出警报,它会无限地出现 但是当我使用:'
function ON(){
$('#makecorr').get(0).onclick=new Function('OFF()');
}
function OFF()
{
$('#makecorr').get(0).onclick=new Function('ON()');
}
它有效。我哪里错了?
答案 0 :(得分:2)
这一行:
$(obj).unbind('click');
$(obj).click(function() { functionname(); });
...如果按上述顺序执行,则只会导致您定义的处理程序被附加。如果你看到其他行为,那么它必须是脚本中的其他内容。
关于
以这种方式设置onclick功能有什么区别:
obj.onclick=new Function('functionname')
和
obj.onclick=function(){ functionname();};
如果您正在动态地向元素添加处理程序,并且由于其他原因您已经在使用jQuery,那么您根本不想使用onclick
属性;坚持使用jQuery API,以避免让自己感到困惑。 : - )
即使你没有使用jQuery,你几乎从不想要使用new Function(...)
。只有非常特殊的情况才需要。大多坚持function() { functionname(); }
(或直接使用functionname
)。