2010-06-30 4 views
1

도장을 사용하고 있습니다. 나는 이런 식으로 뭔가를 가지고 :클릭 핸들러를 프로그래밍 방식으로 실행

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

내가 다른 버튼에서 fooBar의 클릭 핸들러를 트리거합니다. 다음과 같이 입력하십시오 :

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

그럴 수 있습니까?

+1

'Cam O do that? '당신은 왜 시도하지 않습니까? – jigfox

+0

내가 예상했던대로'dojo.query (" node>") [0] .click은' – sprugman

+0

'eval (document.getElementById ('fooBar'). getAttribute ('onclick')) 함수가 아니기 때문에, ; '네 일할 것인가? 내가 생각하기에 더러워졌지만 ... – MooGoo

답변

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

또는

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

See examples

.

필자는 전에 Dojo를 사용하지 않았지만 인라인 이벤트보다 더 잘할 수 있다고 말할 수 있습니다. :). 또한, Dojo는 인라인으로 추가되었으므로 Dojo에서 관리하지 않습니다. 여기서 onclick 메서드는 요소의 onclick 속성에 첨부 된 함수를 트리거하기위한 기본 DOM 메서드입니다.

dojo.byId

document.getElementById에 대한 바로 가기, 그리고 솔직히 당신은 쉽게 여기 도장없이 수행 할 수 있습니다

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

:

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

이 문자 절감의 비교 (9, 14)와 three methods입니다

not using inline click handlers에 대한 몇 가지 좋은 이유를 확인하십시오.

+0

dojo.byId는 form/id/name 사고를 다루는 일에 약간의 시간이 걸리지 만 아주 별칭이 아닙니다. 이() "클릭", dojo.trigger ('는 foobar') 기본 및 사용자 정의 DOM 이벤트를 트리거 내 미니 프로젝트의 기능을하지만, 심지어 그냥 클릭 기능을 호출하는 것보다 더 비싸다. 이상적으로는 attachEvent/addEventListener (dojo.connect)를 통해 명명 된/namespaced 클릭 함수를 노드에 바인딩하고 dom을 전혀 건드리지 않고 직접 해당 함수를 호출하는 것이 이상적입니다. Dojo에서 우리는 그 개념을 기반으로 한 패턴을 위해 dojo.publish와 dojo.subscribe를 가지고있다. – dante

관련 문제