jQuery-다중 : 선택자가 아님


80

'#'로 시작하지 않고 인라인 자바 스크립트를 포함하지 않는 페이지 전체 링크를 타겟팅하려고하지만 선택기를 올바르게 구성하는 방법을 파악하는 데 문제가 있습니다.

여러 선택자에 대해 검색 한 내용을 기반으로하면 작동해야합니다. 두 선택자는 함께 작동하지 않고 독립적으로 작동합니다!

$('a:not([href*=javascript]), a:not([href^=#])')
.each(function(){...

'or'연산자를 사용해 보셨습니까? 좋아요 : $ ( 'a : not ([href * = "javascript | #"])')
Bas Slagter

원래 코드 가 제대로 작동하고 있으므로 더 많은 코드와 HTML을 게시하여 무엇이 잘못되었는지 확인하십시오.
Shadow Wizard는 2011-08-22

답변:


141

사용해보십시오

$('a:not([href*=javascript]):not([href^=#])') ...

8
작동하지만 불필요하게 2 번 부정합니다. 성능에 영향을 미칠 수 있지만 모르겠습니다. 나는 명쾌함 / 단순함을 좋아하지만 읽기가 더 쉬울 수도 있습니다$('a:not([href*=javascript],[href^=#])')
Adrien Be

안녕하세요 @AdrienBe이 바이올린에서 : jsfiddle.net/pranavcbalan/dd6tuent/2 두 번째 열과 마지막 열을 피하고 싶습니다. 나는 당신의 조언에 따라 이것을하려고합니다 : $ ( 'input : not (: last : nth-child (2))', $ tr) .each (function () {// 마지막과 두 번째 입력을 제외한 입력 반복 tot + = Number ($ (this) .val ()) || 0; // 구문 분석 및 값 추가, NaN이면 0 추가}); 그러나 그것은 도움이되지 않습니다. 어떤 아이디어 제발?
3AK

@jtbandes, 귀하의 제안으로 시도했지만 작동하지 않습니다. 어딘가에서 작은 실수를하고 있습니다. jsfiddle을 확인해 주시겠습니까?
3AK

@Sizzler 당신은 "단지"단 하나의 열을 피함으로써 그것을 먼저 작동 시켰습니까?
Adrien Be

@AdrienBe 예. 할 수 있습니다. 이 바이올린을 확인하십시오. jsfiddle.net/sizzler/xodzm0qw/3 여기서 size1 열과 전체 열을 피할 수 있습니다.
3AK

43

시도해 볼 수도 있습니다.

$('a').not('[href^=#],[href*=javascript]')

1
참고 : 이미 변수에 선택기가있는 경우 따옴표 사이에 쉼표를 추가하는 것을 잊지 마십시오. 예 :$('a').not(selOne + ',' + selTwo + ',' + selX);
Adrien Be

성능상의 이유로 우리는 아마 :not대신 사용하는 것이 좋습니다 .not(). 참조 stackoverflow.com/questions/8845811/...을
아드 리언은 수

16

jQuery에 표시된대로 -: not ()의 다중 선택자? , 이것이 올바른 방법입니다.

$( 'a:not([href*=javascript],[href^=#])' )

이미 변수에 부정 할 선택자가있는 경우 쉼표를 따옴표로 묶는 것을 잊지 마십시오.

var selOne = '[href*=javascript]';
var selTwo = '[href^=#]';
$('a:not(' + selOne + ',' + selTwo + ')')

코드가 약간 혼란 스럽지만 이점이 있다는 것을 인정합니다. 다음과 같은 작업을 수행 할 수 있습니다.

var selOne = '[href*=javascript], [href^=#]';
var selTwo = '.anotherSelector, .andAnother, .andSoOn';
$('a:not(' + selOne + ',' + selTwo + ')')

어떤 이유로 선택자를 그룹화해야 할 때 유용합니다. 코드의 다른 곳에서 동일한 선택기 그룹을 사용합니다.


동일한 기술을 사용한 실제 예

$('div:not(.rose-flower,.bus-vehicle)').css('color','red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="bus-vehicle">I am a bus</div>
<div class="strawberry-fruit">I am a strawberry</div>
<div class="rose-flower">I am a rose</div>

또한 http://jsfiddle.net/bmL8gz5j/


:notvs .not(): 성능상의 이유로 :not보다 를 사용해야합니다 . ": not"및 ".not ()"선택기 사용 간의 성능 차이를.not() 참조하십시오 .

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