Як зазначено у 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/
:not
vs .not()
: З міркувань продуктивності вам слід :not
скоріше скористатися , ніж .not()
, див. Різниця в продуктивності використання селекторів ": not" та ".not ()"?