unbinding hover() - ไม่ใช่กรณีปกติ

ฉันมี jQuery ที่เมื่อใดก็ตามที่เอกสารพร้อม จะผูกเหตุการณ์โฮเวอร์กับตัวจัดการกับองค์ประกอบที่มี class="widget-box" ปัญหาคือเมื่อเอกสารพร้อม ตัวจัดการเหตุการณ์โฮเวอร์จะถูกผูก แต่เมื่อผู้ใช้คลิกปุ่มบนเพจ ajax จะถูกใช้เพื่อโหลดส่วนหนึ่งของเพจนั้นใหม่ จากนั้นเอกสารพร้อมจะทำให้เหตุการณ์โฮเวอร์ถูกผูก อีกครั้งในองค์ประกอบเดียวกัน ฉันไม่ต้องการให้พฤติกรรมนี้เกิดขึ้นและต้องการให้ผูกเหตุการณ์โฮเวอร์เพียงครั้งเดียวเท่านั้น ฉันได้พยายามที่จะยกเลิกการผูก hover() เมื่อใดก็ตามที่เอกสารพร้อมถูกเรียกอีกครั้งด้วย unbind('mouseenter') และ unbind('mouseleave') แต่อย่างใด นั่นไม่ได้ผลในการลบโฮเวอร์ที่ถูกผูกไว้แล้ว ไม่มีใครมีความคิดใด ๆ เกี่ยวกับวิธีการแก้ไขปัญหานี้หรือไม่?

ขอบคุณ!


person Andrew    schedule 08.07.2011    source แหล่งที่มา
comment
โอกาสใดที่คุณสามารถโพสต์รหัสของคุณ?   -  person Kyle    schedule 08.07.2011
comment
คุณสามารถโพสต์ตัวอย่าง js และ html ที่เป็นปัญหาได้หรือไม่ ... มันไม่ชัดเจน 100% ว่าปัญหาอยู่ที่ใด ฉันเข้าใจจากคำอธิบายของคุณว่าเกิดอะไรขึ้น แต่ฉันไม่รู้มากพอที่จะบอกว่าวิธีแก้ปัญหาคืออะไร   -  person prodigitalson    schedule 08.07.2011
comment
ฉันสามารถแสดง js ได้ แต่จริงๆ แล้วฉันกำลังรวมโค้ดของฉันกับของคนอื่น และบอกฉันว่าพวกเขาใช้ ajax เพื่อโหลดเพจซ้ำ แต่ไม่เคยแสดงให้ฉันเห็นว่าโค้ดนั้นอยู่ที่ไหน   -  person Andrew    schedule 08.07.2011


คำตอบ (2)


คุณอาจทำอะไรผิด ทำเช่นนี้:

$(".widget-box").unbind('mouseenter mouseleave').bind('hover', ...);

หวังว่านี่จะช่วยได้ ไชโย

person Edgar Villegas Alvarado    schedule 08.07.2011

ลองใช้วิธี .live() :)

ที่จะมีคุณสมบัติ:

ทำไมคุณโหลดจาวาสคริปต์เดียวกันสองครั้ง? หากคุณโหลดเพียงครั้งเดียว และใช้ .live แทน .hover คุณยังคงสามารถแนบกิจกรรมของคุณกับองค์ประกอบที่เกี่ยวข้องได้โดยไม่ต้องเรียกใช้ js อีกครั้ง

แก้ไข:

คุณเคยพิจารณาที่จะห่อโค้ดของคุณในลักษณะเช่นนี้:

if(document.myScriptIsLoaded!=true){
    document.myScriptIsLoaded=true;
    //put your document ready here
}
person Trey    schedule 08.07.2011
comment
สิ่งที่เกิดขึ้นตอนนี้คือจาวาสคริปต์ของฉันถูกโหลดโดยโค้ดของคนอื่นที่ถูกเรียกโดยคำขอ ajax และฉันไม่สามารถควบคุมจำนวนครั้งที่ผู้ใช้กดปุ่มและทำให้ ajax โหลดเพจได้ แต่แนวคิด live() ของคุณอาจใช้ได้ผล ให้ฉันลอง - person Andrew; 08.07.2011