2017-09-27 3 views
0
나는 기존 jQuery를 함께 일하고

(버전 3.2.1) 함수를 정의하는 방법 : 경우에만 작동됩니다이 경우

$('#example').on('click', 'tbody td:not(:first-child)', 
    function (e) { 
     // do stuff 
    }); 

, 기능 (전자). TD가 행의 첫 번째 열이 아닙니다.

더 많은 조건을 추가해야하는 경우 (적어도 5 개 이상의 열이있는 테이블의 경우) 함수가 약간 이상하게됩니다.

테스트 할 때 작동한다는 것을 알고 있지만 더 나은 방법이 있어야합니다.

$('#example').on('click', 'tbody td:not(:first-child):not(:nth- 
    child(2)):not(:nth-child(3))', 
function (e) { 
    // do stuff 
}); 

선택기에 조건이 없음을 나타내는 더 선명한 기술이 있습니까? 내가 선택기 문자열을 함수로 대체 할 수 있다고 생각했지만, 심지어는 jQuery website에서 사용중인 예제를 보지 못했습니다.

+3

':하지 (.excludeme)' –

+0

는 클래스 .excludme를 어디? – RandomHandle

+0

잘'excludeme'는 클래스 이름이 될 것입니다. –

답변

1

@ lilezek의 대답은 좋은 것입니다. 타겟을 한 줄로 줄이려는 경우 다른 곳에서 변수의 문자열을 정의한 다음 해당 변수를 선택기로 이벤트 처리기에 전달할 수 있습니다.

var selector_foo = 'tbody td:not(:first-child):not(:nth- 
child(2)):not(:nth-child(3))' 
... 
$('#example').on('click', selector_foo, 
    function (e) { 
     // do stuff 
}); 
+0

두 가지 방법 모두 생태계에 따라 강점과 어려움이 있습니다. 여러 답변을 upvote 수 있지만, 아아, 나는 하나 이상의 "답변"으로 표시 할 수 없습니다. – RandomHandle

1

this과 같은 것을 찾고 계십니까?

$("#example") 
    .not(":first-child") 
    .not(":nth-child(2)") 
    .not(":nth-child(3)") 
    .on('click', 
    function (e) { 
    // do stuff 
    }); 

면책 조항 : 실제로 작동하는지 확인하지 않았습니다.

+0

@Kevin B의 의견을 테스트했으며 실제로는 가장 간단합니다. ': not (.excludme)'내가해야하는 것은 내가 필요한 특정 컬럼을 꾸미는 것 뿐이다. 완벽하게 작동한다. – RandomHandle

+0

수업을 제외시키는 것이 더 빠른 해결책입니다. 그러나 여기에서도 코드 샘플을 사용하여 체인을 연결할 수는 없다는 것을 명심하십시오. – lilezek

-5

클래스를 사용하면 훨씬 간단한 해결책이됩니다. 사용하려는 클래스를 제외하려는 셀에 추가하고 평상시와 같이 선택하십시오.

tbody td:not(.exclude)