รับวัตถุ JQuery ที่ว่างเปล่า


120

ในรหัสต่อไปนี้ฉันตั้งค่าตัวจัดการการเปลี่ยนแปลงในกล่องเลือกเพื่อแสดงและซ่อนคำถามติดตามบางคำถามตามค่าของการเลือก

นอกจากนี้สำหรับค่าบางค่าของการเลือกจะมีข้อความพิเศษที่ปรากฏขึ้น

เพื่อตรวจสอบว่าฉันจำเป็นต้องซ่อนข้อความพิเศษหรือไม่ฉันจึงเก็บตัวแปรที่เรียกว่า Previous เมื่อเรียกใช้ตัวจัดการฉันตรวจสอบเพื่อดูว่าก่อนหน้านี้เป็นโมฆะหรือขนาดเป็น 0

จะเป็นการดีที่จะเริ่มต้น Previous เป็นวัตถุ JQuery ที่ว่างเปล่าเพื่อที่จะไม่ต้องทำการตรวจสอบค่าว่างเพิ่มเติม

การทำ $ () จะส่งคืนวัตถุที่มีขนาด 1

มีวิธีสร้างวัตถุ Jquery เปล่าหรือไม่?

// ฟังก์ชันเริ่มต้น
$ (ฟังก์ชั่น () {
// ถือวัตถุที่เลือกไว้ก่อนหน้านี้สำหรับการเลือกประเภทบัญชี

var ก่อนหน้า = null; // นี่คือที่ที่ฉันต้องการเริ่มต้น
                      // อย่างเช่น Previous = $ ();


$ ( "SELECT [ชื่อ = 'ACCOUNTTYPE']"). การเปลี่ยนแปลง (
    function () {
        // ซ่อนข้อความก่อนหน้าหากมี
        ถ้า (ก่อนหน้า == null || Previous.size ()> 0) { 
            Previous.hide ();
        }

        // แสดงข้อความหากพบและบันทึกเป็นก่อนหน้านี้
        ก่อนหน้า = $ ("#" + this.value + "_ Msg") แสดง ();

        // รับคำถาม fisrt
        var FirstQuestion = $ (". FirstQuestion");
        ถ้า (this.value === '') {
            FirstQuestion.hide ();
        }อื่น{
            // แสดง FirstQuestion ด้วยตนเอง
            FirstQuestion.show ();
        }
    });
}

ในกรณีที่เลวร้ายที่สุดฉันสามารถทำสิ่งนี้ได้:

    var ก่อนหน้า = {size: function () {return 0; }};

แต่ดูเหมือนว่าจะมากเกินไป

คำตอบ:


222

สิ่งนี้สร้าง jQuery-object ที่ว่างเปล่า:

$([])

อัปเดต: ใน jQuery (1.4+) เวอร์ชันใหม่กว่าคุณสามารถใช้:

$()

ขอบคุณ แล้วอันไหนดีกว่าที่จะรักษาความเข้ากันได้กับรุ่นก่อนหน้าและรุ่นต่อไป? - อย่างไรก็ตามฉันยังคิดไม่ออกว่าทำไมทั้งสองกรณีของฉันถึงไม่ได้ผล บางทีฉันควรเปิดคำถามเกี่ยวกับเรื่องนี้ แต่ฉันแก้ไขได้โดยใช้ PHP แทน jQuery ดังนั้นฉันจึงไม่สามารถเจาะลึกได้ในตอนนี้
cregox

2
ทดสอบละเอียด: $ (). add ($ ("div")). css ('color', 'red');
zloctb

24
$();

การส่งคืนชุดที่ว่างเปล่า

ในขณะที่ jQuery 1.4 การเรียกใช้jQuery()เมธอดโดยไม่มีอาร์กิวเมนต์จะส่งกลับชุด jQuery ที่ว่างเปล่า (พร้อม.lengthคุณสมบัติเป็น0) ใน jQuery เวอร์ชันก่อนหน้านี้จะส่งคืนชุดที่มีโหนดเอกสาร

ที่มา: api.jquery.com


6
การระบุลิงก์ ( api.jquery.com/jQuery/#jQuery1 ) เพื่อสำรองคำสั่งของคุณอาจทำให้คุณได้รับข้อมูลเพิ่มเติม :)
studgeek

1
เพิ่มคะแนนสำหรับแหล่งที่มาที่รวมอยู่ ดีเสมอที่มีบริบททั้งหมด ลิงก์โดยตรงไปยังย่อหน้าที่เกี่ยวข้องเพิ่มเติมคือ: api.jquery.com/jQuery/#returning-empty-set
ksadowski

3

คำแนะนำของฉันคืออย่าทำอย่างนั้น มีหลายวิธีที่ง่ายกว่านี้ พิจารณา:

<select id="select" name="select">
  <option value="msg_1">Message 1</option>
  <option value="msg_2">Message 1</option>
  <option value="msg_3">Message 1</option>
</select>

<div class="msg_1 msg_3">
  ...
</div>

<div class="msg_1">
  ...
</div>

<div class="msg_2">
  ...
</div>

$(function() {
  $("#select").change(function() {
    var val = $(this).val();
    $("div." + val").show();
    $("div:not(." + val + ")").hide();
  });
});

ง่ายกว่ามาก . โดยทั่วไปให้คลาสเพื่อระบุสิ่งที่จะแสดงและซ่อนจากนั้นไม่จำเป็นต้องติดตาม อีกทางเลือกหนึ่งคือ:

$(function() {
  $("#select").change(function() {
    var val = $(this).val();
    $("div").each(function() {
      if ($(this).hasClass(val)) {
        $(this).show();
      } else {
        $(this).hide();
      }
    });
  });
});

-1

ลองดู

 var new = $([]);

ฉันไม่ใช่โปรแกรมเมอร์ที่ดี แต่ให้วัตถุว่างเปล่า :))


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