2011-06-11 21 views
6

मैं अपने एसवीजी में कुछ तत्वों को हाइलाइट करने के लिए राफेल। Mouseover() और .mouseout() ईवेंट का उपयोग करता हूं। यह ठीक काम करता है, लेकिन जब मैं किसी तत्व पर क्लिक करता हूं, तो मैं इसे हाइलाइट करना बंद करना चाहता हूं।राफेल जेएस: घटनाओं को कैसे हटाया जाए?

Raphael documentation में मैंने पाया:

घटनाओं "संयुक्त राष्ट्र" उपसर्ग के साथ ही विधि का नाम का उपयोग निकल करने के लिए, अर्थात् element.unclick (च);

लेकिन मुझे यह काम नहीं मिल रहा है और मैं 'एफ' पैरामीटर को भी समझ नहीं पा रहा हूं।

यह काम नहीं करता है, लेकिन क्या करता है ??

obj.click(function() { 
    this.unmouseover(); 
}); 
+0

40 सवालों के साथ, मैं उनमें से एक से अधिक 57% उचित जवाब है कि के रूप में सही चिह्नित जा सकता था आशा करता हूं। :) –

+2

नहीं, प्रलेखन का कहना है कि आप उन घटनाओं को अनइंड करने के लिए 'un' का उपयोग कर सकते हैं ... लेकिन यह काम नहीं करता है, या मैं कुछ गलत कर रहा हूं ... मैं अच्छे उत्तरों का चयन करने के लिए अपने प्रश्नों की फिर से जांच करूंगा, लेकिन उनमें से अधिकतर वास्तव में अभी तक पूरी तरह से उत्तर नहीं दिए गए हैं, मुझे लगता है .... – Dylan

+0

यदि आपके पास ऐसे प्रश्न हैं जिनके पास उत्तर हैं, लेकिन उनमें से कोई भी "सही" नहीं है, तो आप पुनर्विचार कर सकते हैं कि आप सवाल कैसे पूछते हैं, भले ही वे हैं स्पष्ट और संक्षेप में, और क्या वे सफलतापूर्वक उत्तर देने के लिए भी स्थानीयकृत हैं। :) –

उत्तर

5

ठीक है, आप क्या करना है unmouseover अनुरोध करने के लिए हैंडलर समारोह पारित है:

// Creates canvas 320 × 200 at 10, 50 
var paper = Raphael(10, 50, 320, 200); 
// Creates circle at x = 50, y = 40, with radius 10 
var circle = paper.circle(50, 40, 10); 
// Sets the fill attribute of the circle to red (#f00) 
circle.attr("fill", "#f00"); 
// Sets the stroke attribute of the circle to white 
circle.attr("stroke", "#fff"); 

var mouseover = function (event) { 
    this.attr({fill: "yellow"}); 
} 
var mouseout = function (event) { 
    this.attr({fill: "red"}); 
} 

circle.hover(mouseover, mouseout); 
circle.click(function (event) { 
    this.attr({fill: "blue"}); 
    this.unmouseover(mouseover); 
    this.unmouseout(mouseout); 
}); 

http://jsfiddle.net/GexHj/1/

क्या f के बारे में है यही कारण है कि। तुम भी unhover() उपयोग कर सकते हैं:

circle.click(function (event) { 
    this.attr({fill: "blue"}); 
    this.unhover(mouseover, mouseout); 
}); 

http://jsfiddle.net/GexHj/2/

+0

ग्रेट, बहुत बहुत धन्यवाद! यहां तक ​​कि अब ऑब्जेक्ट्स की एक सरणी के साथ काम कर रहा है, जहां मैं माउस ऑब्जेक्ट का उपयोग प्रत्येक ऑब्जेक्ट की 'प्रॉपर्टी' के रूप में करता हूं ... – Dylan

+0

इस पुराने उत्तर पर प्रश्न: "this.unmouseout (माउसआउट)" को कॉल करना; ऐसा लगता है कि आप मूल रूप से "माउसआउट" होने पर फ़ंक्शन नाम पर भरोसा करते हैं? तो मैं "myFunc" फ़ंक्शन कह सकता था और मैं इसे "unmyFunc" से जोड़ दूंगा, है ना? लेकिन यह किसी भी कोड minification के लिए भयानक लगता है, है ना? इस बात की कोई गारंटी नहीं है कि अगर "myFunc" को "xy" में कम किया जाता है कि "unmyFunc" को "unxy" को कम किया जाएगा। क्या मैं कुछ भूल रहा हूँ? –

+0

'माउसआउट' वास्तव में फ़ंक्शन का संदर्भ है, स्ट्रिंग मान नहीं। सिद्धांत रूप में, संदर्भ द्वारा एक फ़ंक्शन को पास करने के रूप में जावास्क्रिप्ट में सामान्य व्यवहार का हिस्सा है, एक आक्रामक minification फ़ंक्शन संदर्भ की पहचान और प्रतिस्थापन के साथ-साथ फ़ंक्शन पहचानकर्ता लेबल की घोषणा करना चाहिए। बिना किसी परीक्षण के मेरा जवाब, आपको कोई समस्या नहीं होनी चाहिए।यदि आपको एक विशिष्ट मिनीफायर के साथ एक विशिष्ट परीक्षण मिलता है, तो कृपया मुझे बताएं। –

संबंधित मुद्दे