Như được chỉ ra trong jQuery - Nhiều bộ chọn trong một: not ()? , đây là cách chính xác để làm điều này:
$( 'a:not([href*=javascript],[href^=#])' )
Đừng quên đặt dấu ngoặc kép xung quanh dấu phẩy nếu bạn đã có bộ chọn của mình để phủ định trong các biến
var selOne = '[href*=javascript]';
var selTwo = '[href^=#]';
$('a:not(' + selOne + ',' + selTwo + ')')
Tôi thừa nhận rằng mã hơi khó hiểu nhưng nó có một lợi thế, bạn có thể làm những việc như sau:
var selOne = '[href*=javascript], [href^=#]';
var selTwo = '.anotherSelector, .andAnother, .andSoOn';
$('a:not(' + selOne + ',' + selTwo + ')')
Nó hữu ích bất cứ khi nào bạn cần nhóm các bộ chọn vì lý do nào đó. sử dụng cùng một nhóm bộ chọn ở một nơi khác trong mã.
Một ví dụ trực tiếp sử dụng cùng một kỹ thuật
$('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>
Cũng trên http://jsfiddle.net/bmL8gz5j/
:not
vs .not()
: Vì lý do hiệu suất, bạn nên sử dụng :not
hơn là .not()
, hãy xem Sự khác biệt về hiệu suất giữa việc sử dụng bộ chọn ": not" và ".not ()"?