การเรียก ready function ให้ทำงานอีกครั้ง Turn Back
2013-02-28 12:11:46
ปัญหานี้เกิดขึ้นจากการวางคำสั่งไว้ใน $().ready(function() { ... }
ซึ่งจะสามารถทำงานได้ครั้งเดียวที่โหลดเพจขึ้นมา แต่ถ้ามีการเขียน เปลี่ยนแก้ไข html แบบ dynamic
โดยใช้ innerText innerHtml , ajax หรือพวก open popup แล้วจะกลับมาทำงานในหน้า window.opener
ซึ่งบางงาน อาจมีการเรียกใช้งาน script ใน ready function อีกครั้ง แต่กลับไม่สามารถทำงานได้
ดังนั้นเราจำเป็นต้องกำหนด function คำสั่งใน ready เป็นแบบ global แล้วทำการเรียกใช้งานอีกครั้ง
ตัวอย่าง.
index.html
<script>
$().ready(function() {
window.foo = function foo() {
$(".calendar").datepicker();
}
foo();
});</script>
หลังจากทำงานที่ window popup เสร็จ ก็เรียกใช้ foo() อีกครั้งเพื่อให้ datepicker ทำงาน
popup.html
$(opener.document).find('div').append('<input class="calendar" />');
window.opener.foo();
window.close();