以编程方式触发单击处理程序

spr*_*man 1 javascript dojo dom-events

我正在使用道场.我有这样的事情:

<a id="fooBar" onclick="foo();bar();">Foo then Bar</a>
Run Code Online (Sandbox Code Playgroud)

我想fooBar从另一个按钮触发点击处理程序.就像是:

<a onclick="dojo.query('#fooBar')[0].click()">Do FooBar</a>
Run Code Online (Sandbox Code Playgroud)

我能这样做吗?

Anu*_*rag 5

dojo.byId('fooBar').onclick();
Run Code Online (Sandbox Code Playgroud)

要么

dojo.query('#fooBar')[0].onclick();
Run Code Online (Sandbox Code Playgroud)

见例子.

我之前没有使用过Dojo,但可以肯定地说你可以做得比内联事件更好:).此外,这些不会由Dojo管理,因为它们是内联添加的.onclick这里的方法是一个本机DOM方法,用于触发附加到onclick元素属性的函数.

dojo.byId是一个快捷方式document.getElementById,老实说,你可以轻松地在这里没有Dojo:

document.getElementById("fooBar").onclick();
Run Code Online (Sandbox Code Playgroud)

以下是比较字符节省的三种方法(9和14):

document.getElementById('fooBar').onclick();
dojo.query('#fooBar')[0].onclick();123456789
dojo.byId('fooBar').onclick();12345678901234
Run Code Online (Sandbox Code Playgroud)

查看不使用内联点击处理程序的几个很好的理由.