jQuery를 사용하여 동적으로 onClick 이벤트 추가


128

사용중인 플러그인으로 인해 평소처럼 HTML 양식 입력에 "onClick"속성을 추가 할 수 없습니다. 플러그인이 내 사이트의 양식 부분을 처리하고 있으며이 작업을 자동으로 수행하는 옵션을 제공하지 않습니다.

기본적으로이 입력이 있습니다.

<input type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style="">

jQuery onload를 사용하여 onClick을 추가하고 싶습니다.

<input onClick="myfunction()" type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style="">

어떻게해야합니까?

나는 이것이 표준 관행이 아닐 수도 있지만 내 상황에서 가장 쉬운 옵션처럼 보입니다.

나는 jQuery의 초보자이므로 어떤 도움이라도 대단히 감사합니다.

답변:


211

click이벤트 를 사용하고 함수를 호출하거나 로직을 핸들러로 이동할 수 있습니다.

$("#bfCaptchaEntry").click(function(){ myFunction(); });

click이벤트 를 사용하고 함수를 핸들러로 설정할 수 있습니다.

$("#bfCaptchaEntry").click(myFunction);

.딸깍 하는 소리()

이벤트 핸들러를 "click"JavaScript 이벤트에 바인딩하거나 요소에서 해당 이벤트를 트리거합니다.

http://api.jquery.com/click/


on바인딩 된 이벤트 를 사용 "click"하여 함수를 호출하거나 로직을 핸들러로 이동할 수 있습니다.

$("#bfCaptchaEntry").on("click", function(){ myFunction(); });

on바인딩 된 이벤트 를 사용하고 "click"함수를 핸들러로 설정할 수 있습니다.

$("#bfCaptchaEntry").on("click", myFunction);

.의 위에()

하나 이상의 이벤트에 대한 이벤트 처리기 함수를 선택한 요소에 연결합니다.

http://api.jquery.com/on/


간단하고 이해하기 쉽습니다. 정확히 내가 원했던 것. 또 다른 질문 : jQuery를 사용하여 배경색 변경을 통합하는 가장 쉬운 방법은 무엇입니까? 또는 'style.backgroundColor = "white";'를 사용하는 것이 더 낫습니다. 기능 섹션에서?
Claudio Delgado 2012 년

38

개체 클라이언트 이름을 알고있는 경우이 방법을 시도하십시오 (Button 또는 TextBox는 중요하지 않음).

$('#ButtonName').removeAttr('onclick');
$('#ButtonName').attr('onClick', 'FunctionName(this);');

JQuery로 서버 객체에 onClick 이벤트를 추가하려면 이것을 시도하십시오.

$('#' + '<%= ButtonName.ClientID %>').removeAttr('onclick');
$('#' + '<%= ButtonName.ClientID %>').attr('onClick', 'FunctionName(this);');

이것은 동시에 호출하지 않고 함수를 설정합니다.
Vassilis

.click .attr의 onclick 대신 사용하면 직접처럼, 함수를 호출하는 대신 스크립트 명령을 할당 할 수 있습니다 의미 "history.go(0);""alert('Hi!');".
조나단

2
별도의 함수를 정의하고 호출하지 않고도 함수를 설정할 수 있기를 원했기 때문에 이것이 정확히 필요한 것입니다. 4 년 늦게 감사합니다.
kevin walker

1
이 답변에 대해 내가 좋아하는 점은 함수를 호출하지 않고 onclick 만 설정한다는 것입니다
gdrt

18

아래 접근 방식을 시도하십시오.

$('#bfCaptchaEntry').on('click', myfunction);

또는 jQuery가 절대적으로 필요하지 않은 경우 아래에서 시도하십시오.

document.getElementById('bfCaptchaEntry').onclick = myfunction;

그러나 위의 메소드는 핸들러로 등록되지 않고 속성으로 onclick을 설정하므로 단점이 거의 없습니다.

이 게시물에 대해 자세히 알아보기 https://stackoverflow.com/a/6348597/297641


'그러나 위의 방법'이라고 말하면 일반 자바 스크립트 방법을 참조하는지 또는를 사용하는 것과 .onclick비교하여 두 버전을 하나로 그룹화 하는지 명확하지 않습니다 .click. .on핸들러를 등록하는 것과 마찬가지로 실제로 전자임을 알고 있지만 다른 곳에서 확인해야합니다. 이 ... 당신의 대답에 더 명확 있다면 그것은 미래의 독자에 대 한 좋은 것)
AntonChanning


1
let a = $("<a>bfCaptchaEntry</a>");
a.attr("onClick", "function(" + someParameter+ ")");

0

또는 화살표 함수를 사용하여 정의 할 수 있습니다.

$(document).ready(() => {
  $('#bfCaptchaEntry').click(()=>{

  });
});

더 나은 브라우저 지원을 위해 :

$(document).ready(function() {
  $('#bfCaptchaEntry').click(()=>{

  });
});

1
수락 된 답변이 이미 .click()방법을 제안했기 때문에 이것이 새로운 것을 제공하는 방법을 알지 못합니다 . 화살표 기능을 사용할 것인지 일반 기능을 사용할 것인지는 질문과 관련이없는 토론이라고 생각합니다. 더 나은 브라우저 지원을 위해 첫 번째 기능뿐만 아니라 두 화살표 기능을 모두 제거해야합니다.
agrm dec. 05

jQuery를 사용하는 또 다른 방법이기 때문입니다
Gabriel Jaime Sierra Rua
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.