여러 요소에 대한 jQuery 동일한 클릭 이벤트


435

페이지의 다른 요소에 대해 동일한 코드를 실행하는 방법이 있습니까?

$('.class1').click(function() {
   some_function();
});

$('.class2').click(function() {
   some_function();
});

대신 다음과 같은 작업을 수행하십시오.

$('.class1').$('.class2').click(function() {
   some_function();
});

감사

답변:


866
$('.class1, .class2').on('click', some_function);

또는:

$('.class1').add('.class2').on('click', some_function);

기존 객체에서도 작동합니다.

const $class1 = $('.class1');
const $class2 = $('.class2');
$class1.add($class2).on('click', some_function);

11
더 많은 의사 클래스를 사용하여 조금 더 확장하더라도 개발자가이를 기억할 수 있도록 스타일을 정의 할 때 CSS 선택기를 적용하는 것과 같은 형식입니다.
Brett Weber

8
이 var class2 = $ ( ". class2")와 같이 class2가 캐시 된 경우 어떻게됩니까?
Vivek S

18
@NeverBackDown .add()은 jquery 객체에서도 작동합니다.
Eevee

2
이것은 선택기 중 하나가 정의되지 않은 것을 반환하더라도 존재하는 jquery 객체에 여전히 이벤트를 첨부합니다.
벤 수 워드 14

3
누군가 $('.class1, .class2')와 의 실제 차이점이 무엇인지 설명 할 수 $('.class1').add('.class2')있습니까? 어떤 경우에 우리는 사용해야 .add()합니까?
Taufik Nur Rahmanda

108

나는 일반적으로 on대신에 사용 합니다 click. 특정 함수에 더 많은 이벤트 리스너를 추가 할 수 있습니다.

$(document).on("click touchend", ".class1, .class2, .class3", function () {
     //do stuff
});

그것이 도움이되기를 바랍니다!


1
나는이 방법을 더 좋아한다. 그러나 동일한 선언에서 클래스별로, 요소별로 하나를 대상으로 지정할 수 있습니까? 예를 들어 $ (document) .on ( "click touchend", ".class1, # id1, .class3", function () {// do stuff});
Gaurav Ojha

3
1 년 후 : 예, 가능합니다! @GauravOjha
Obed Marquez Parlapiano

3
직접 처리기 대신 위임 된 생성기를 만드는이 기술 은 처리기를 등록한 생성 된 일치 요소에 의해 트리거되는 이벤트를 처리하는 고유 한 이점도 제공 합니다. 참조 : api.jquery.com/on
Jonathan Lidbeck

39
$('.class1, .class2').click(some_function);

$ ( '. class1, space here.class2')와 같은 공백을 넣으십시오. 그렇지 않으면 작동하지 않습니다.


17

$('.myclass1, .myclass2, .myclass3')여러 선택기에 간단히 사용하십시오 . 또한 기존 함수를 클릭 이벤트에 바인딩하기 위해 람다 함수가 필요하지 않습니다.


7
당신은 쉼표 뒤에 공백이 필요합니다
Maurizio 덴마크의

10

요소가 변수로 저장되었다고 가정하는 또 다른 대안은 함수 본문에서 여러 번 액세스하는 경우 종종 좋은 아이디어입니다.

function disableMinHeight() {
    var $html = $("html");
    var $body = $("body");
    var $slideout = $("#slideout");

    $html.add($body).add($slideout).css("min-height", 0);
};

jQuery 체인을 활용하고 참조를 사용할 수 있습니다.


4

요소를 변수 (jQuery 객체)로 유지하거나 유지하려는 경우 해당 요소를 반복 할 수도 있습니다.

var $class1 = $('.class1');
var $class2 = $('.class2');

$([$class1,$class2]).each(function() {
    $(this).on('click', function(e) {
        some_function();
    });
});

3

다음과 같이 쉼표로 구분 된 클래스 목록을 추가하십시오.

jQuery(document).ready(function($) {

$('.class, .id').click(function() { 

//  Your code

    }

});

2

다음과 같이 코딩 할 수도 있습니다. 여기에서 블러 이벤트를 사용했습니다.

$("#proprice, #proqty").blur(function(){
      var price=$("#proprice").val();
      var qty=$("#proqty").val();
      if(price != '' || qty != '')
      {
          $("#totalprice").val(qty*price);
      }
  });

1

많은 입력 필드가 포함 된 객체에 대한 링크가 있으며 동일한 이벤트로 처리해야합니다. 따라서 find () 를 사용 하여 이벤트가 필요한 모든 내부 객체를 가져옵니다.

var form = $('<form></form>');
// ... apending several input fields

form.find('input').on('change', onInputChange);

객체가 한 레벨 아래 링크 인 경우, children () 링크 대신 find () 메소드를 사용할 수 있습니다.


1

위의 훌륭한 예제와 답변 외에도 클래스를 사용하여 두 가지 요소에 대해 "찾기"를 수행 할 수도 있습니다. 예를 들면 다음과 같습니다.

<div class="parent">
<div class="child1">Hello</div>
<div class="child2">World</div>
</div>

<script>
var x = jQuery('.parent').find('.child1, .child2').text();
console.log(x);
</script>

"HelloWorld"가 출력됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.