2011-09-10 15 views
6

मैं एफएफ में JSFIDDLE
अद्यतनthis version काम करता है पर एक डेमो बना दिया है लेकिन क्रोम नहीं ..
अद्यतन 2 यह website एक काम समाधान है लगता है।माउस कर्सर को माउस पर कैसे पकड़ें?

मेरी जावास्क्रिप्ट के रूप में

$("#click").live({ 
    mousedown: function() { 
      this.addClass("closed"); 
     }, 
    mouseup: function() { 
      this.removeClass("closed"); 
     } 
}); 

इस प्रकार है और सीएसएस के रूप में

.closed { 
    cursor: url(https://mail.google.com/mail/images/2/closedhand.cur), default !important; 
} 

इस प्रकार है लेकिन क्यों कर्सर इस jQuery कोड के साथ नीचे माउस पर एक बंद हाथ नहीं होता है? आपको बहुत बहुत धन्यवाद! किसी भी मदद की सराहना की जाएगी!

+0

मैं सवाल को नवीनीकृत किया है और यह भी पता चलता है कि डेमो jQuery जावास्क्रिप्ट काम नहीं करता। – Mohammad

+1

कुछ ब्राउज़र अब तक इसका समर्थन करते हैं: 'कर्सर: -webkit-grabbing; कर्सर: -मोज़-हथियार; '। –

उत्तर

3

2016 अद्यतन:

मैं पर काम कर रहा हूँ एक jQuery स्लाइडर प्लगइन में ऐसा करने की जरूरत। मैंने जो किया वह कर्सर को सीएसएस में परिभाषित करता था, फिर jQuery के साथ स्पर्श/माउस ईवेंट पर उन्हें जोड़ें/हटा दें।

सीएसएस:

.element:hover{ 
    cursor: move; 
    cursor: -webkit-grab; 
    cursor: grab; 
} 
.element.grabbing { 
    cursor: grabbing; 
    cursor: -webkit-grabbing; 
} 

जे एस:

$(".element").on("mousedown touchstart", function(e) { 
    $(this).addClass('grabbing') 
}) 

$(".element").on("mouseup touchend", function(e) { 
    $(this).removeClass('grabbing') 
}) 
+1

जब मैंने सवाल पूछा था तो यह काम नहीं करता था, मुझे खुशी है कि यह अब काम करता है! – Mohammad

1

यह (कम से कम एफएफ में) काम करता है: http://jsfiddle.net/uZ377/21/

मैं बाध्य करने के लिए लाइव बदल गया है, पता नहीं क्यों, लेकिन लाइव काम नहीं किया। इसके अलावा, मैंने jQuery-फ़ंक्शन में this लपेट लिया।

0

असल में ऐसा लगता है कि mousedown और mouseup घटनाओं को बाध्य करने के लिए लाइव विधि के साथ कोई समस्या है। दो तत्वों को अलग करके यह ठीक काम करता प्रतीत होता है।

वैसे भी कर्सर प्रॉपर्टी का यूआरएल हिस्सा सभी ब्राउज़रों में समर्थित नहीं है। उदाहरण के लिए क्रोम और फ़ायरफ़ॉक्स के साथ जांचें, यह मेरे लिए ठीक काम करता है, लेकिन ओपेरा में नहीं, क्योंकि जहां तक ​​मुझे पता है कि इसका समर्थन नहीं है।

+0

नहीं, यह ठीक नहीं है। "Uncaught TypeError: ऑब्जेक्ट # में कोई विधि नहीं है 'विभाजित' ' – genesis

+0

JSFIDDLE उदाहरण में मैंने ऊपर दो अन्य divs प्रदान किए हैं उदाहरण के लिए यह दिखाने के लिए कि क्लास कस्टम कर्सर क्षमता प्रदान करता है। यह मेरे ब्राउज़र "क्रोम" में काम करता है। धन्यवाद! – Mohammad

+0

@genesis: ठीक है, ध्यान नहीं दिया क्योंकि हाथ क्रोम और एफएफ दोनों में मेरे लिए ठीक काम कर रहे थे। –

1

मैंने इन दो घटनाओं को विभाजित कर दिया है।

http://jsfiddle.net/genesis/uZ377/23/

हालांकि, यह यह क्रोम में काम नहीं कर रहा है, लेकिन यह फ़ायरफ़ॉक्स में काम कर रहा है।

0

वाक्य रचना का उपयोग कर रहे पेश नहीं किया गया था जब तक 1.4.3 (documented here), आपके jsFiddle 1.4.2 का उपयोग करता है। आपकी जेएसफ़िल्ड $(this) की बजाय this पर कक्षा भी जोड़ती है।

लेकिन मुझे यह भी यकीन नहीं है कि कर्सर सीएसएस कैसे mousedown और माउसअप पर प्रतिक्रिया करता है - मुझे लगता है कि कुछ ब्राउज़रों में सीमित हो सकता है, थोड़ा सा झुकाव इसे माउसअप पर काम कर रहा है, लेकिन मूसडाउन नहीं - जो लगता है अजीब।

+0

मुझे यह अजीब लगता है कि एक साधारण माउस डाउन या माउस अप क्लास इवेंट जोड़ सकता है तो बहुत खराब हो सकता है .. – Mohammad

1
$(document).ready(function() { 
    $(".surface").mouseup(function(){ 
     $(".surface").css("cursor","crosshair"); 
     }).mousedown(function(){ 
     $(".surface").css("cursor","wait"); 
     }); 
}); 

सीएसएस .surface{cursor:crosshair;} मेक इन आप माउस नीचे/ऊपर है बस/डाउन आइकन ऊपर हाथ कर्सर बदलना चाहते हैं शुरू कर दिया। उम्मीद है कि यह मदद करता है।

3

आप केवल सीएसएस के साथ माउस कर्सर हड़पने प्राप्त कर सकते हैं:

/* Standard cursors */  
.element { cursor: grab; } 
.element:active { cursor: grabbing; } 

/* Custom cursors */ 
.element { cursor: url('open-hand.png'), auto; } 
.element:active { cursor: url('closed-hand.png'), auto; } 
संबंधित मुद्दे