2016-01-25 9 views
5

मैं कुछ तत्वों को गतिशील रूप से जोड़ रहा हूं और इसे प्रतिनिधि कार्यक्रम हैंडलर में एक होवर प्रॉपर्टी असाइन कर रहा हूं जिसके लिए मैंने कोड नीचे उपयोग किया था और यह काम नहीं करता था।क्यों होवर प्रतिनिधि कार्यक्रम हैंडलर में काम नहीं करता है?

$(document).on("hover", ".sec_close_fast", function() { 
    $(this).parent('div').parent('div').css("border", "3px solid #000000"); 
}); 

तब मैं mouseover का इस्तेमाल किया और यह काम किया:

$(document).on("mouseover", ".sec_close_fast", function() { 
    $(this).parent('div').parent('div').css("border", "3px solid #000000"); 
}); 

मुझे पता है क्यों hover काम नहीं करता चाहते हैं, फिर भी mouseover करता है।

उत्तर

7

फ़ंक्शन/ईवेंट .hover वास्तव में एक ईवेंट नहीं है, लेकिन mouseenter और mouseleave के लिए सिर्फ एक शॉर्टेंड है। docs से:

.hover() विधि दोनों mouseenter और mouseleave घटनाओं के लिए संचालकों बांधता है। माउस तत्व के भीतर होने के दौरान आप तत्व के व्यवहार को बस लागू करने के लिए इसका उपयोग कर सकते हैं।

तो आप इसे "प्रतिनिधि" घटनाओं में उपयोग नहीं कर सकते हैं।

समाधान

आप पहले से ही उल्लेख किया है के रूप में और के रूप में यह डॉक्स में उल्लेख किया है, तो आप उपयोग कर सकते हैं:

$(static_parent).on("mouseenter mouseleave", element, function (e) { 
    if (e.type == "mouseenter") { 
    // check if it is mouseenter, do something 
    } else { 
    // if not, mouseleave, do something 
    } 
}); 
संबंधित मुद्दे