Javascript 更改HTML按钮的onclick事件委托?
如何更改单击表单按钮时将执行的JavaScript 我尝试更改其onClicked和onClicked子属性,如下所示:Javascript 更改HTML按钮的onclick事件委托?,javascript,prototypejs,Javascript,Prototypejs,如何更改单击表单按钮时将执行的JavaScript 我尝试更改其onClicked和onClicked子属性,如下所示: $('mybutton').onClick = 'doSomething'; 及 两者似乎都不起作用。我的其他选择是: 有两个按钮,隐藏一个,显示另一个 将它定向到一个函数,该函数求值字符串并将字符串更改为我要执行的函数 两个看起来都不太优雅 我使用Prototype作为js库,这样它就有了我可以使用的任何有用的工具。对于Prototype,我相信它会是这样的: $("my
$('mybutton').onClick = 'doSomething';
及
两者似乎都不起作用。我的其他选择是:
我使用Prototype作为js库,这样它就有了我可以使用的任何有用的工具。对于Prototype,我相信它会是这样的:
$("mybutton").observe('click', function() {
// do something here
});
Event.observe('mybutton', 'click', doSomething);
编辑:或者,如中所述,您可以简单地指定要在单击时调用的函数:
$('mybutton').observe('click', respondToClick);
function respondToClick(event) {
// do something here
}
但是,这些都是特定于原型的。在javascript中设置onclick处理程序的一般方法是将
onclick
直接传递给函数,而不是字符串。因此,如果myButton
设置为DOM元素,您将编写:
myButton.onclick = doSomething;
因此,当您单击“mybutton”按钮时,doSomething
函数将被称为doSomething()
。对于匿名函数,您可以编写:
myButton.onclick = function() {
alert("myButton was clicked!");
};
在JQuery中,它是
$("#myButtonId").click(myFunction);
function myFunction(){
alert("Clicked");
}
或者,如果要将函数内联:
$("#myButtonId").click(function(){
alert("Clicked");
});
如果您使用JQuery,首先确保使用相关的选择器前缀(即:如果您使用元素的Id,请在其前面加一个#)。其次是click方法,它将回调分配给click事件。上次我使用Prototype时,它是这样的:
$("mybutton").observe('click', function() {
// do something here
});
Event.observe('mybutton', 'click', doSomething);
顺便说一句,如果您没有引用函数名,您的示例甚至可能有效
编辑:是,Element.observe(Element,eventName,handler)和someElement.observe(eventName,handler)也可以工作。并且不要引用处理程序名称-您希望传递函数而不是字符串 使用原型框架,您可以:
Event.observe("mybutton", "click", clickHandler);
或:
或:
或:
- 见
$("#myButtonId").writeAttribute('onclick', ''); // first remove the attribute
$("#myButtonId").observe('click', function () { ... }); // then add the event
如果原始onclick事件是通过HTML属性设置的,则可以使用以下方法覆盖它:
$("#myButtonId").setAttribute("onclick", "myFunction();");
这是可行的,但是它不会删除html中设置的onclick属性。。。这很糟糕……你完全正确。当我回答这个问题时,我没有想到这一点。不过我没有使用JQuery。下一次我可能会这样做,这样可能会有用。
$("#myButtonId").writeAttribute('onclick', ''); // first remove the attribute
$("#myButtonId").observe('click', function () { ... }); // then add the event
$("#myButtonId").setAttribute("onclick", "myFunction();");