【发布时间】:2012-05-03 09:25:35
【问题描述】:
有没有办法检索内联 JavaScript 调用的元素源?
我有一个这样的按钮:
<button onclick="doSomething('param')" id="id_button">action</button>
注意:
- 按钮是从服务器生成的
- 我无法修改生成过程
- 页面上生成了几个按钮,我只能在客户端进行控制。
我尝试过的:
function doSomething(param){
var source = event.target || event.srcElement;
console.log(source);
}
在萤火虫上我得到事件未定义
编辑: 在一些答案之后,使用 jQuery 覆盖事件处理是非常可以接受的。我的问题是如何在不知道函数名称的情况下使用原始参数调用原始 onClick 函数。
代码:
<button onclick="doSomething('param')" id="id_button1">action1</button>
<button onclick="doAnotherSomething('param1', 'param2')" id="id_button1">action2</button>.
<button onclick="doDifferentThing()" id="id_button3">action3</button>
.
.
and so on..
所以覆盖将是:
$(document).on('click', 'button', function(e) {
e.preventDefault();
var action = $(this).attr('onclick');
/**
* What to do here to call
* - doSomething(this, 'param'); if button1 is clicked
* - doAnotherSomething(this, 'param1', 'param2'); if button2 is clicked
* - doDifferentThing(this); if button3 is clicked
* there are many buttons with many functions..
*/
});
【问题讨论】:
-
我在那儿!此解决方案假定我必须将事件参数传递给我的函数,或者 按钮是从服务器生成的
-
传递事件参数是 Firefox 的要求。跨浏览器解决方案需要事件参数。
-
@skafandri:如果您运行 JavaScript,您可以修改按钮,无论其源代码是如何生成的。
标签: javascript jquery html