ฉันได้รับข้อผิดพลาด "Uncaught RangeError: ขนาดสแต็กการโทรสูงสุดเกิน" บน Chrome นี่คือฟังก์ชั่น jQuery ของฉัน
$('td').click(function () {
if ($(this).context.id != null && $(this).context.id != '') {
foo($('#docId').val(), $(this).attr('id'));
}
return false;
});
สังเกตว่ามีเซลล์นับหมื่นในหน้า อย่างไรก็ตามโดยทั่วไปฉันเชื่อมโยงสแต็คล้นกับการเรียกซ้ำและในกรณีนี้เท่าที่ฉันเห็นไม่มีเลย
การสร้างแลมบ์ดาเช่นนี้จะทำให้เกิดภาระในสแตกโดยอัตโนมัติหรือไม่? มีวิธีใดบ้าง?
ในขณะนี้วิธีแก้ปัญหาเดียวที่ฉันมีคือการสร้างเหตุการณ์ onclick อย่างชัดเจนในแต่ละเซลล์เมื่อแสดงผล HTML ซึ่งทำให้ HTML มีขนาดใหญ่ขึ้นมาก
foo($('#docId').val(), $(this).attr('id'));
บรรทัดหรือไม่ - เคล็ดลับประสิทธิภาพพิเศษ: แคชผลลัพธ์ของตัวเลือก - ตัวอย่างเช่นเก็บผลลัพธ์$(this)
ไว้ในตัวแปรและใช้มากกว่าในตัวจัดการของคุณตามต้องการ