2014-10-30 2 views
0

DOM에 이미지를 반복하는 jQuery (.each 메소드)에 루프가 있습니다. 나는 프로그래밍 방식과 같이이 중 하나를 클릭 할 :jQuery .each 메소드를 통해 전달 된 HTML 항목을 클릭하십시오.

$("#gallery img").each(function(a, b){ 

    if(a === 10){  
     console.log(b); // outputs <img scr="path/image.gif alt data-id="Christmas0110"> 
     this.click(); 
    } 

}); 

이 내가 this.click()$(this).click()에 난 아직 아무것도 얻을 변경도 할 때, 제대로 작동 does't! 내가 도대체 ​​뭘 잘못하고있는 겁니까.

+0

$ (this) .trigger ('click')을 사용해 보셨습니까? –

+0

먼저 클릭하려는 항목의 클릭 핸들러를 재정의하십시오. 그런 다음 재정의 함수를 호출하면됩니다. – danielson317

+0

$ (this) .click()해야합니다. IMG 태그에 대한 이벤트 수신기가 작동하는지 확인 하시겠습니까? 무슨 일이 일어나야합니까? –

답변

-4

첫째, 분명한 보안상의 이유로 실제 사용자 클릭을 시뮬레이트 할 수 없습니다.

그러나 each 함수에서 변수 b으로 전달 된 개체에 작용할 수 있습니다.

예 : doSomething(b);

+0

실제로 사용자 클릭을 시뮬레이트하는 클릭 이벤트를 전달하는 데는 몇 가지 방법이 있습니다. –

+0

자바 스크립트에서 객체에 이벤트를 발생 시키면 이벤트가 팝업 되어도 팝업 차단기가 활성화되어 있어도 새 창을 생성 할 수있는 것과 같은 상호 작용과 DOM 상호 작용이 동일하지 않습니다. 자동 다운로드 보안 설정을 해제하고 다운로드를 시작하십시오. –

1

예, 당신은 사용자의 클릭을 시뮬레이션 할 수 있습니다 - 당신이 듯했으나, 당신은을 통해 JQuery와에 this 전달해야합니다 $(this)

$("#gallery img").each(function(a, b){ 

    if(a === 10){  
     console.log(b); // outputs <img scr="path/image.gif alt data-id="Christmas0110"> 
     $(this).click(); 
    } 

}); 

내가 듣고 계속 그 중 일부 버전 IE를 사용하려면 $(this).trigger("click")을 사용해야합니다. 그러나 IE를 사용하는 것과 같은 다른 결정을 쉽게 수행 할 수있는 방법은 없습니다.

또한 조건부 a === 10이 있으므로 원하는 결과를 얻기 위해 모든 과정을 반복하는 대신 다른 접근 방식을 사용하는 것이 좋습니다.

당신은 할 수 :

$("#gallery img:nth-child(10)").click();

은 "이"함수 본문에서합니다 (IMG을 의미

+0

$ (this) .click() 및 $ (this) .trigger ('click')를 시도했지만 IE8에서는 모두 실패합니다. –

+0

하! 내가 할 수 있으면 좋겠다! ie8 실패에 대한 –

+0

: 클릭 이벤트를 img에 어떻게 바인딩합니까? –

0

(나는, 내가 인덱스를 작동하는 방법을 잊어 9 있어야한다고 생각합니다) DOM, jQuery가 아닌)을 인덱스 10에 추가합니다. 실제로 아무 것도 수행하지 않는 핸들러를 미리 바인딩하지 않은 경우 아무 것도 얻지 않습니다. 일반 img 태그를 클릭하면 기본적으로 아무 것도 수행되지 않습니다.

+0

우후, 5 번은 내가 sth를 쓰고있는 동안 대답했다. – Ben

관련 문제