เมื่อเร็ว ๆ นี้ ฉันใช้ Jquery เมื่อทำงานในโครงการ สามเณรกำลังเรียนรู้ jquery ฉันพบปัญหา "แปลก" บางอย่าง (อาจารย์โปรดอย่าตำหนิฉัน)
ขอขอบคุณ Mr. ClassYuan สำหรับการสนับสนุนของเขา บล็อกของ ClassYuan http://www.classyuan.com/
1. เมื่อโหลดเหตุการณ์ด้วยองค์ประกอบ HTML กิจกรรมจะถูกดำเนินการพร้อมกับการโหลด
รหัสข้อผิดพลาด:
ดูแหล่งที่มา
PRint?1 $("#btnLoad").bind("click",GetProduct());
รหัสที่ถูกต้อง
ดูแหล่งที่มา
พิมพ์?1 $("#btnLoad").bind("คลิก", function() { GetProduct() });
ในโค้ดนี้ ฉันละเว้นวิธี Bind คำอธิบาย API คือ bind(type,[data],fn)
ฉันเข้าใจผิดคิดว่า fn เป็นฟังก์ชันธรรมดา ดังนั้นโค้ดนี้จะรัน fn หนึ่งครั้งเมื่อโหลด
นี่เป็นการกำกับดูแลในรูปแบบการเขียน ฉันหวังว่าคนที่รู้เหตุผลสามารถให้คำแนะนำฉันได้
2. ปัญหาขอบเขตของตัวแปร (ดูเหมือนว่านี่ไม่ใช่ปัญหาของ jquery มันเป็นความแตกต่างระหว่าง js และ .net.. )
ดูแหล่งที่มา
พิมพ์?1 ข้อความฟังก์ชัน () {
2 สำหรับ (var i = 0; i < 3; i++) {
3 $("<a>ลบ</a>").attr({ id: "hr_" + i, href: "javascript:;" }).addClass("btnCSS").bind("click", function () { tes(i) }).appendTo(".div_list");
4}
5}
6 ฟังก์ชั่น tes(id) {
7 การแจ้งเตือน (รหัส);
8}
ฟังก์ชันนี้ฉันต้องการให้แจ้งเตือน ID ที่เกี่ยวข้อง ผลลัพธ์คือ คำตอบเป็นที่พอใจมาก เป็นฟังก์ชันที่มี 3 <a> แท็ก
ดูแล้ว...ก็เข้าใจครับ
เกี่ยวกับปัญหาของขอบเขตตัวแปร พารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชัน tes คือค่าของ i หลังจากที่ลูปสิ้นสุด ดังนั้นทั้งหมดจึงเป็น 3
ดูเหมือนว่าจะแตกต่างจาก. net
สุดท้าย วิธีแก้ - -.. แค่ส่ง $(this) เข้า
3. ปัญหาเกี่ยวกับลำดับการดำเนินกิจกรรม
ดูแหล่งที่มา
พิมพ์?1 <a target="_blank" title="Iphone">
2 <img id="proImg7_2" src="" alt="Iphone" style="width:70px; height:60px; border:none; />
3 </a>
เหตุการณ์ onclick ถูกผูกไว้กับรูปภาพนี้ เนื้อหาของเหตุการณ์คือการเพิ่มแอตทริบิวต์ href ให้กับพาเรนต์ของแท็ก <img>
แต่หลังจากดำเนินการเหตุการณ์แล้ว กิจกรรมจะข้ามไปยังลิงก์ของแท็กโดยตรง หลังการวิเคราะห์
ควรเป็นไปได้ว่าการคลิกจะดำเนินการก่อน href นั่นคือเมื่อมีการคลิกรูปภาพ แท็ก A มี href อยู่แล้ว จากนั้นแท็ก A จะถูกทริกเกอร์ในเวลาเดียวกัน
วิธีแก้ไข.. ลบแท็กด้านนอกของ <img>.. จากนั้นแก้ไขเหตุการณ์
ดูแหล่งที่มา
print?1 idwrap(' <a href=" http://www.QQ.com"></a>' );
ข้างต้นคือปัญหาที่ผมซึ่งเป็นมือใหม่เจอเมื่อใช้ jquery เป็นครั้งแรก ผมจะทิ้งมันไว้ที่นี่และถือว่ามันเป็นกระบวนการของการเติบโต เรียนทหารผ่านศึกอย่าบ่น..