[jquery] href 요소에서 클릭 이벤트를 트리거하는 방법

아래 방법과 같이 jQuery를 사용하여 하이퍼 링크에서 클릭 이벤트를 트리거하려고합니다. 하이퍼 링크에는 ID가 없지만 cssclass가 있습니다.

 $(document).ready(function () {  $('.cssbuttongo').trigger('click'); });

위의 기능이 작동하지 않습니다. 이것은 하이퍼 링크입니다

<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>



답변

나는 이것을 증명할 사실적인 증거가 없지만 이미이 문제에 부딪 혔습니다. <a>태그 에서 click () 이벤트를 트리거하는 것이 입력 버튼과 같은 방식으로 작동하지 않는 것 같습니다.

내가 사용한 해결 방법은 브라우저가 다음과 같이 요청 리소스를로드하도록하는 창에 location.href 속성을 설정하는 것입니다.

$(document).ready(function()
{
      var href = $('.cssbuttongo').attr('href');
      window.location.href = href; //causes the browser to refresh and load the requested url
   });
});

편집하다:

나는 js 바이올린을 만들 것이지만 jsfiddle이 iframe을 사용하여 코드를 렌더링하는 방법과 혼합 된 질문의 성격은 그것을 불가능하게 만듭니다.


답변

네이티브 DOM 메서드는 올바른 일을합니다.

$('.cssbuttongo')[0].click();
                  ^
              Important!

이는 hrefURL, 조각 (예 🙂 #blah또는 javascript:.

이것은 clickjQuery click메서드 (매우 불완전하고 완전히 무시 함 href) 대신 DOM 메서드를 호출합니다 .


답변

romkyns의 훌륭한 답변 외에도 .. 관련 문서 / 예제가 있습니다.


DOM 요소 에는 네이티브 .click()메서드가 있습니다.

HTMLElement.click()메서드는 요소에 대한 마우스 클릭을 시뮬레이션합니다.

클릭이 사용되면 문서 트리 (또는 이벤트 체인)의 상위 요소로 버블 링되는 요소의 클릭 이벤트도 발생하고 클릭 이벤트도 발생합니다. 그러나 클릭 이벤트의 버블 링으로 인해 <a>실제 마우스 클릭이 수신 된 것처럼 요소가 탐색을 시작 하지 않습니다 . (mdn 참조)

관련 W3 문서 .


몇 가지 예 ..

  • jQuery 객체에서 특정 DOM 요소에 액세스 할 수 있습니다. (예제)

      $('a')[0].click();
    
  • .get()메소드를 사용하여 jQuery 객체에서 DOM 요소를 검색 할 수 있습니다 . (예제)

      $('a').get(0).click();
    
  • 예상대로 DOM 요소를 선택하고 .click()메서드를 호출 할 수 있습니다 . (예)

      document.querySelector('a').click();
    

네이티브 이벤트 를 트리거하는 데 jQuery가 필요 하지 않다는 점을 지적 할 가치가 .click()있습니다.


답변

JavaScript를 통해 클릭을 트리거하면 하이퍼 링크가 열리지 않습니다. 이것은 브라우저에 내장 된 보안 조치입니다.

그러나 몇 가지 해결 방법 은 이 질문 을 참조하십시오 .


답변

여러분들에게 알려 드리고 싶은 대답이 항상 작동하는 것은 아닙니다.

다음은 실패 할 예입니다.

만약 <href='/list'>

href = $('css_selector').attr('href')
"/list"
href = document.querySelector('css_selector').href
"http://localhost/list"

또는 jQuery에서 얻은 href를 여기에 추가 할 수 있습니다.

href = document.URL +$('css_selector').attr('href');

또는 jQuery 방식

href = $('css_selector').prop('href')

마지막으로 브라우저의 현재 페이지 URL을 변경하려면 호출하십시오.

window.location.href = href

또는 사용하여 튀어 나오십시오. window.open(url)

다음 은 JSFiddle의 예입니다.


답변

링크 대신 버튼을 클릭하는 방법과 비슷한 문제가 발생했습니다. .trigger ( ‘click’) 또는 [0] .click () 메서드에서는 성공하지 못했고 그 이유를 알지 못했습니다. 마침내 다음이 저에게 효과적이었습니다.

$('#elementid').mousedown();


답변