jQuery ไม่รวมองค์ประกอบที่มีคลาสบางอย่างในตัวเลือก


127

ฉันต้องการตั้งค่าทริกเกอร์เหตุการณ์การคลิกใน jQuery สำหรับแท็กจุดยึดบางรายการ

ฉันต้องการเปิดลิงก์บางลิงก์ในแท็บใหม่โดยไม่สนใจลิงก์ที่มีคลาสใดคลาสหนึ่ง (ก่อนที่คุณจะถามฉันไม่สามารถใส่คลาสในลิงก์ที่ฉันพยายามจับได้เนื่องจากมาจาก CMS)

ฉันต้องการยกเว้นลิงก์ที่มีคลาส"button"OR"generic_link"

ฉันเหนื่อย:

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

แต่ดูเหมือนจะไม่ได้ผลฉันจะทำอย่างไรคำสั่ง OR เพื่อรวม"generic_link"ไว้ในการยกเว้น

คำตอบ:


263

คุณสามารถใช้เมธอด. not () :

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

หรือคุณสามารถใช้ตัวเลือก: not () :

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

มีความแตกต่างเล็กน้อยระหว่างสองแนวทางยกเว้น.not()สามารถอ่านได้มากกว่า (โดยเฉพาะเมื่อถูกล่ามโซ่) และ:not()เร็วกว่าเล็กน้อย ดูคำตอบ Stack Overflowสำหรับข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่าง


1
ฉันจึงทำได้: $ (". content_box a"). not (". button"). not (". generic_link") คลิก (function (e) ... ?
Titan

1
.each()ทำงานได้อย่างสมบูรณ์แม้เมื่อมีการใช้
cfx

ดูเหมือนว่าจะมีข้อบกพร่องเมื่อใช้.text()- ข้อความขององค์ประกอบที่ถูกลบโดยใช้คำพูด.notยังคงอยู่ในข้อความ
Netsi1964


2

หากต้องการเพิ่มข้อมูลบางอย่างที่ช่วยฉันในวันนี้วัตถุ jQuery / thisยังสามารถส่งผ่านไปยังตัวเลือก. 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>

ตัวอย่างข้างต้นสามารถทำให้ง่ายขึ้น แต่ต้องการแสดงการใช้งานthisในnot()ตัวเลือก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.