2012-09-10 14 views
6
बंद खींचें के बाद फायरिंग नहीं mouseup

इस jsfiddle देखें:jQuery लिंक

http://jsfiddle.net/CB87X/6/

क्लिक करें बटन दबाए रखें, बटन और रिलीज से खींचें। जैसा कि आप देख सकते हैं, माउस बटन जारी होने पर माउस तत्व तत्व पर नहीं है, तो माउसअप घटना कभी नहीं होती है। इस प्रकार, मेरे उदाहरण में स्टाइल कभी भी मूल में बदल नहीं जाता है। क्लिक किए गए तत्व पर नहीं होने पर माउस बटन जारी होने पर आप माउसअप ईवेंट को कैसे फायर करते हैं?

संपादित 1: बीटीडब्ल्यू मैंने इस साइट पर कई समाधानों को देखा है, उन्हें लागू किया है, और माउसअप घटना अभी भी आग नहीं आई है।

+2

ध्यान दें कि यह कम से कम क्रोम में नियमित बटन का डिफ़ॉल्ट व्यवहार भी है। [डेमो] (http://jsfiddle.net/QxZCB/) –

+1

जैसे [इस तरह] (http://jsfiddle.net/CB87X/7/) – Sender

उत्तर

9

mouseup ईवेंट पॉइंटर कहां से संबंधित है और यह व्यवहार की अपेक्षा की जाती है। यदि आप अपने बटन को ठीक से शैली में रखना चाहते हैं, तो mouseleave ईवेंट को बाध्य करें।

+0

"साथ ही" मुझे लगता है कि आप दो घटनाओं को बांध सकते हैं एक चयनकर्ता? यदि हां, तो क्या आप मुझे दिखा सकते हैं? क्या मैं बस एक अलग समारोह जोड़ता हूँ? – preahkumpii

+5

'स्पेस' से अलग घटनाओं को जोड़ें। '$ ("। लेकिन ")। बाइंड (" माउसअप माउसलेव ", फ़ंक्शन() {...}' – alexbusu

+0

+1 इसके लिए कीड़े के लिए सलामी बल्लेबाज प्रदान करने के लिए +1 * (माउसलेव्स और माउस री को प्रबंधित करने के लिए - बटन दबाए जाने पर प्रभाव को छोड़ने पर पर्याप्त नहीं है) * धन्यवाद, हालांकि। :-) – HostileFork

2

एक काम उदाहरण प्रदान करने के लिए अपने उदाहरण काँटेदार:

http://jsfiddle.net/67Rrs/2/

एक बार बटन mousedown एड है, एक घटना अगले mouseup के लिए बाध्य है, जहाँ भी यह है कि शैली रीसेट करता है, होता है।

2

यह चाल करना चाहिए। यदि आपने बटन (.but) पर क्लिक किया है और खींचें, तो आप पृष्ठ पर कहीं भी mouseup कर सकते हैं और फिर भी क्लिक ईवेंट को आग लगा सकते हैं। यदि आप mouseleave पृष्ठ 'बॉडी' और mouseup, bind ed mouseleave ईवेंट unbind एड है।

$('.but').mousedown(function(e) { 
    if (e.which == 1) { 
     var $this = $(this); 
     $this.bind('mouseleave', function(){ 
      $('body').one('mouseup', function() { 
       $this.click(); 
      }); 
     }); 
     $this.mouseup(function() { 
      $(this).unbind('mouseleave'); 
     }); 
    } 
}); 
संबंधित मुद्दे