jQuery loại trừ các phần tử với lớp nhất định trong bộ chọn


127

Tôi muốn thiết lập trình kích hoạt sự kiện nhấp trong jQuery cho các thẻ neo nhất định.

Tôi muốn mở một số liên kết nhất định trong một tab mới trong khi bỏ qua các liên kết với một lớp nhất định (trước khi bạn hỏi tôi không thể đặt các lớp trên các liên kết tôi đang cố gắng nắm bắt khi chúng đến từ CMS).

Tôi muốn loại trừ các liên kết với lớp "button"HOẶC"generic_link"

Tôi đã thử:

$(".content_box a[class!=button]").click(function (e) {
    e.preventDefault();     
    window.open($(this).attr('href'));
});

Nhưng điều đó dường như không hoạt động, làm thế nào để tôi thực hiện một tuyên bố OR để đưa "generic_link"vào loại trừ?

Câu trả lời:


263

Bạn có thể sử dụng phương thức .not () :

$(".content_box a").not(".button")

Ngoài ra, bạn cũng có thể sử dụng bộ chọn : not () :

$(".content_box a:not('.button')")

Có rất ít sự khác biệt giữa hai cách tiếp cận, ngoại trừ .not()dễ đọc hơn (đặc biệt là khi bị xiềng xích) và :not()rất nhanh. Xem câu trả lời Stack Overflow này để biết thêm thông tin về sự khác biệt.


1
Vì vậy, tôi có thể làm: $ (". Content_box a"). Not (". Nút"). Không (". Generic_link"). Click (function (e) ...?
Titan

1
Làm việc hoàn hảo, ngay cả khi sử dụng .each().
cfx

Dường như có một lỗi khi sử dụng .text()- văn bản của phần tử bị xóa bằng cách sử dụng say .notvẫn còn trong văn bản.
Netsi1964


2

Để thêm một số thông tin giúp tôi ngày hôm nay, một đối tượng jQuery / thiscũng có thể được chuyển vào bộ chọn .not () .

$(document).ready(function(){
    $(".navitem").click(function(){
        $(".navitem").removeClass("active");
        $(".navitem").not($(this)).addClass("active");
    });
});
.navitem
{
    width: 100px;
    background: red;
    color: white;
    display: inline-block;
    position: relative;
    text-align: center;
}
.navitem.active
{
    background:green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="navitem">Home</div>
<div class="navitem">About</div>
<div class="navitem">Pricing</div>

Ví dụ trên có thể được đơn giản hóa, nhưng muốn hiển thị cách sử dụng thistrong not()bộ chọn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.