2010-06-30 2 views
1

Я использую додзё. У меня есть что-то вроде этого:программный стрельба обработчика щелчка

<a id="fooBar" onclick="foo();bar();">Foo then Bar</a> 

Я хочу, чтобы вызвать обработчик щелчка fooBar «s от другой кнопки. Что-то вроде:

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

Могу ли я это сделать?

+1

'Cam O, что?' Почему вы не пытаетесь? – jigfox

+0

, потому что, как я и ожидал, 'dojo.query (« <путь к узлу> ») [0] .click не является функцией' – sprugman

+0

'eval (document.getElementById ('fooBar'). GetAttribute ('onclick')) , 'будет работать да? Хотя я чувствую себя грязным, даже задумываясь об этом ... – MooGoo

ответ

5
dojo.byId('fooBar').onclick(); 

или

dojo.query('#fooBar')[0].onclick(); 

See examples.

Я до сих пор не использовал Dojo, но могу с уверенностью сказать, что вы можете делать лучше, чем inline-события :). Более того, они не будут управляться Додзе, поскольку они были добавлены в линию. Метод onclick представляет собой собственный DOM-метод для запуска функции, связанной с свойством onclick этого элемента.

dojo.byId ярлык для document.getElementById, и честно вы можете легко обойтись без додзё здесь:

document.getElementById("fooBar").onclick(); 

Вот three methods со сравнением экономии символов (9 и 14):

document.getElementById('fooBar').onclick(); 
dojo.query('#fooBar')[0].onclick();123456789 
dojo.byId('fooBar').onclick();123456789

См. Пару веских причин для not using inline click handlers.

+0

хорошо сказано, хотя dojo.byId выполняет небольшую работу, работая над ошибками формы/id/name, так что это не совсем прямой псевдоним. В моем мини-проекте есть функция инициировать собственные и пользовательские события dom (dojo.trigger («foobar», «click»)), но даже это дороже, чем просто вызов функции щелчка. в идеале, можно было бы связать функцию щелчка с именем/именами, расположенными на узле, через attachEvent/addEventListener (dojo.connect) и просто вызвать эту функцию напрямую, а не касаться dom вообще. В Dojo у нас есть dojo.publish и dojo.subscribe для шаблона, основанного на этой концепции. – dante

Смежные вопросы