Javascript 以编程方式调用onclick属性
我在一个页面上有一堆类似的Javascript 以编程方式调用onclick属性,javascript,jquery,html,Javascript,Jquery,Html,我在一个页面上有一堆类似的标签 <a href="#" id="001" onclick="fnaaa();" >...</a> ... <a href="#" id="002" onclick="fnaba();" >...</a> ... <a href="#" id="003" onclick="fncda();" >...</a> //sometimes maybe like this <
标签
<a href="#" id="001" onclick="fnaaa();" >...</a>
...
<a href="#" id="002" onclick="fnaba();" >...</a>
...
<a href="#" id="003" onclick="fncda();" >...</a>
//sometimes maybe like this
<a href="#" id="004" onclick="fnagg(); return false;" >...</a>
...
$('a[id="' + id + '"]').click();
$('a[id="' + id + '"]').trigger("click");
事实证明这两个都是不允许的,所以如果我有id,我如何调用在onclick属性中编写的函数?我知道我可能会得到这样的结果
var funcToCall = $('a[id="' + id + '"]').attr('onclick');
但是我怎么称呼这个函数调用呢?记住funcToCall可能不仅仅是一个函数名,例如“fnagg();return false;”首先,ID属性必须以字母开头。在修复该问题之后,我建议不要使用内联
onclick
处理程序
$("#ID_HERE").click(function(e) {
fnaaa();
e.preventDefault();
});
然后您可以轻松触发它:
$("#ID_HERE").triggerHandler("click");
但是,如果您绝对必须使用丑陋的onclick,则可以调用它:
var el=document.getElementById('foo');
el.onclick();
您正在使用onclick
属性绑定处理程序。试着像下面这样
document.getElementById(id).click();
演示:
我会这样做: 对于html
<a href="#" class="dynamicFuncs" id="my001" data-funcName="myFunc">test</a>
最好使用addEventListener()。您可以添加所有类型的事件。例如:“单击”、“鼠标移动”等。最后的false是阻止事件向上遍历DOM树。通过将第三个属性设置为true,事件将继续遍历DOM树,以便父元素也将接收事件。这也使得删除事件与使用removeEventListener()添加事件一样简单
添加事件
element.addEventListener(event, function, useCapture)
element.removeEventListener(event, function, useCapture)
删除事件
element.addEventListener(event, function, useCapture)
element.removeEventListener(event, function, useCapture)
事件:必需。指定事件名称的字符串
功能:必需。指定事件发生时要运行的函数
使用捕获可选。一个布尔值,指定是在捕获阶段还是在冒泡阶段执行事件
可能的值:
true-事件处理程序在捕获阶段执行
false-默认值。事件处理程序在冒泡阶段执行
此示例不需要JavaScript库。这只是简单的旧JavaScript,可以在每个浏览器中工作,无需额外的东西
<!DOCTYPE html>
<html>
<head>
<title>exampe</title>
</head>
<body>
<a id="test" href="">test</a>
<script>
document.getElementById("test").addEventListener("click", function(){
alert('hello world');
}, false);
</script>
</body>
</html>
更多信息请点击此处:
使用.on()
此处的更多信息:不,我不知道任何给定标记上的onclick attribute是什么,我只能找到by id,并且想要特定onclick中的函数,您可以执行
$('a[id=“”+id+”)。单击()$('a[id=“”+id+”)。触发器(“单击”)代码>如果使用jQuery函数绑定事件处理程序。阅读更多有关您可以尝试的差异的信息,如setTimeout(funcToCall+“()”,0);这似乎是一个糟糕的设计决策。每个链接都在做什么?例如,fnaaa()
有什么作用?我发布了一个很好的示例,请在本页上查看。谢谢,这些不是我的真实id,我只是尝试简化示例。因此,人们可以看到我正在尝试做的事情—在只知道仍要使用jQuery选择元素的idIf的情况下动态调用内联onclick属性(例如,如果要基于ID以外的内容进行选择),可以使用$(选择器)[0]触发onclick处理程序代码>Im获取对象[Object Object]没有使用jquery version$(选择器)[0]的方法“onclick”。.onclick();如果使用addEventListener(),则不会出现任何错误。onclick()是元素的一个属性,因此只能分配一次单击操作。在何处addEventListener()可以为任意元素分配尽可能多的侦听器和尽可能多的操作。@ScottSelby什么?我想,你的演示中有一个输入错误。检查属性id
。。在该演示中,您将其命名为d
而不是id
@Vega,您是正确的,但这是我所知道的将字符串封装在函数中的唯一方法,就像问题所要求的那样。其实并不总是邪恶的…根据这里投票的答案:
<!DOCTYPE html>
<html>
<head>
<title>exampe</title>
</head>
<body>
<a id="test" href="">test</a>
<script>
document.getElementById("test").addEventListener("click", function(){
alert('hello world');
}, false);
</script>
</body>
</html>
$("#target").click(function() {
alert("Handler for .click() called.");
});
$("#target").on("click", function() {
console.log($(this).text());
});