ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์ProgrammingjQuery ทำไมโหลดไฟล์มาแล้ว ข้อมูลที่โหลดมาทำงานต่อไม่ได้?
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: jQuery ทำไมโหลดไฟล์มาแล้ว ข้อมูลที่โหลดมาทำงานต่อไม่ได้?  (อ่าน 788 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
nannkam
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 5



ดูรายละเอียด
« เมื่อ: 06 กันยายน 2014, 23:30:55 »


พี่ๆช่วยด้วยค่ะ หน้านี้เป็น php ธรรมดา แต่กรอบข้อมูลหนึ่งๆจะเป็น template ที่ออกแบบไว้ในอีกไฟล์หนึ่ง

ตอนนี้การแสดงผลต่างๆถูกต้อง คือ ปุ่ม แก้ไข/ลบ สามารถทำงานแบบ jQuery ได้ปรกติ

แต่พอเขียน function เพิ่ม ให้กรอบ(div)ที่แก้ไขเสร็จแล้ว refresh ตัวเอง
คือ ให้โหลดไฟล์ template มาแสดงผลอีกรอบ (เฉพาะกรอบที่กำหนด)
(เรียกมาด้วยคำสั่ง post เพราะส่งค่า id ไปด้วย)


ทำไมเราไม่สามารถคลิก แก้ไข/ลบ กรอบนี้ได้อีก คลิกแล้วไม่เกิดอะไรขึ้นเลยคะ?
แต่กรอบอื่นๆที่ไม่ได้โหลด Template มาใหม่ ยังทำงานได้ปรกติ


หนูหาคำตอบอยู่เป็นวันแล้ว งงมากเลยค่ะ    wanwan022
« แก้ไขครั้งสุดท้าย: 06 กันยายน 2014, 23:34:20 โดย nannkam » บันทึกการเข้า
scanfire
ก๊วนเสียว
*

พลังน้ำใจ: 23
ออฟไลน์ ออฟไลน์

กระทู้: 245



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 06 กันยายน 2014, 23:39:26 »

ลองdebug แล้วมันนเจออะไรไหมครับ
บันทึกการเข้า

ทำเว็บไซต์ Magento, รับทำเว็บไซน์ขายของ ,รับตัดเว็บไซต์ responsive  ,รับทำแอพมือถือ ,สอนเขียนโปรแกรม, บริษัทรับทำเว็บไซต์
โทร : 0970011614, 063-187-5099
email : softwinthailand@gmail.com
nannkam
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 5



ดูรายละเอียด
« ตอบ #2 เมื่อ: 06 กันยายน 2014, 23:43:49 »

debug ยังไงเหรอคะ
บันทึกการเข้า
scanfire
ก๊วนเสียว
*

พลังน้ำใจ: 23
ออฟไลน์ ออฟไลน์

กระทู้: 245



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 06 กันยายน 2014, 23:45:00 »

เอาง่ายๆ นะครับ chrome กด f12 firefox f12

ไปที่ console ดูตัวแดงๆ ว่าอย่างไร
บันทึกการเข้า

ทำเว็บไซต์ Magento, รับทำเว็บไซน์ขายของ ,รับตัดเว็บไซต์ responsive  ,รับทำแอพมือถือ ,สอนเขียนโปรแกรม, บริษัทรับทำเว็บไซต์
โทร : 0970011614, 063-187-5099
email : softwinthailand@gmail.com
ossytong
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 138
ออฟไลน์ ออฟไลน์

กระทู้: 1,151



ดูรายละเอียด
« ตอบ #4 เมื่อ: 07 กันยายน 2014, 00:16:56 »

เดาว่าเป็นปัญหาที่เกิดจากการ Blind Event ของคำสั่ง JQeury ที่ จขกท. เลือกใช้ครับ มักเจอปัญหานี้กันบ่อยๆ สำหรับหลายๆคนที่ยังไม่เข้าใจการทำงานของ funciton การ blind event ของ JQeury ครับ

ต้องอธิบายพื้นฐานก่อนนะครับ การ Blind Event ต่างๆของ JQeury เนี่ย ในกรณีคำสั่งปกติทั่วๆไป
เช่น $(".a").click(function(event){ .... }
แบบนี้ ในกรณีที่ HTML ถูกสร้างทีหลังจากคำสั่งนี้ คำสั่งนี้จะไม่สามารถ Blind Event ถึง Element ตัวที่สร้างใหม่ได้ครับ จะมีผลเฉพาะกับ element ที่ถูกสร้างก่อนคำสั่ง ข้างต้นทำงานเท่านั้น


การแก้ปัญหา คือเราต้องใช้คำสั่งที่ สามารถ Blind Event ที่รองรับกรณีที่ HTML ถูกสร้างมาภายหลังได้ด้วย ซึ่งคำสั่งเหล่านั้นคือ
.delegate, .on, .live

นั่นเองครับ ส่วนการใช้งานจะเป็นลักษณะประมาณนี้ครับ เราจะแปลงจากข้างเดิม คือจาก code ด้านบน จะได้ดังนี้แทนครับ
$('body').delegate('.a', 'click', function(event){ .....  })

*** ตรง body เราสามารถ scope การ blind event ได้ อาจจะกำหนดเป็น id ของ กรอบ content ส่วนนั้นๆได้ครับ จะได้ไม่ได้ต้อง blind ทั้ง document จะส่งผลเรื่องความเร็วและการจัดการครับ
บันทึกการเข้า
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 07 กันยายน 2014, 00:41:00 »

ตามคำตอบด้านบนเลยครับ อธิบายให้เข้าใจง่ายๆ ก็คือ ลักษณะการทำงานของ Listener คือจะทำการ Listen DOM ทั้งหมดหลังจากที่ Page Load เสร็จแล้ว ทีนี้พอข้อมูลที่มาใหม่ มันไม่ได้ถูก Blind ไว้ด้วย พอมีการ Fire Event ต่างๆ Listener ก็เลยไม่ทำงาน วิธีการแก้ไขหาได้ทั่วไป

http://stackoverflow.com/a/8752376
« แก้ไขครั้งสุดท้าย: 07 กันยายน 2014, 01:07:53 โดย Tee++; » บันทึกการเข้า

nannkam
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 5



ดูรายละเอียด
« ตอบ #6 เมื่อ: 07 กันยายน 2014, 00:55:12 »

น้ำตาจะร่วงค่ะ งมมาทั้งวัน ตัดสินใจโพสที่ TSB ชั่วโมงเดียวได้คำตอบเลย

หนูเปลี่ยนจาก $('.editbox').click(function(){

เป็น $('body').delegate('.editbox', 'click', function() {


เปลี่ยนบรรทัดเดียว WORK เลย !! ขอบคุณมากกๆๆๆจริงๆค่ะ   wanwan017
« แก้ไขครั้งสุดท้าย: 07 กันยายน 2014, 00:56:32 โดย nannkam » บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์