2012-04-30 14 views
27

का चयन/हाइलाइट करते समय ट्रिगर कर रहा है मेरे पास <div> है जिसमें टेक्स्ट का एक समूह है। यह <div> पर jQuery का उपयोग कर .click() ईवेंट भी है।jQuery .click() टेक्स्ट

मेरी समस्या यह है कि पाठ को चुनने/हाइलाइट करते समय .click() ट्रिगर किया जा रहा है। रिलीज करने से पहले कई सेकंड तक माउस को दबाए रखें। http://jsfiddle.net/ym5JX/

व्यवहार है कि मैं उम्मीद होती है कि पाठ पर प्रकाश डाला तत्व पर क्लिक के रूप में ही नहीं है:

यहाँ एक JSFiddle कि इस मुद्दे से पता चलता है।

+1

ऐसा इसलिए है क्योंकि एक 'click' एक' एक 'mouseup' के बाद mousedown' है। –

+3

'mousedown + mouseup = click.' हाइलाइटिंग यह करता है, इसलिए यह क्लिक ट्रिगर कर रहा है। –

+0

यहां बड़ा रहस्य क्या है? – j08691

उत्तर

57

ऐसा इसलिए है क्योंकि clickmousedown है जिसके बाद mouseup है। मेरा सुझाव click हैंडलर के अंदर getSelection जांचना है। यदि यह सेट है, तो आपने कुछ चुना है, अन्यथा आपने अभी क्लिक किया है।

$('#click').click(function() { 
    var sel = getSelection().toString(); 
    if(!sel){ 
     alert("clicked"); 
    } 
});​ 

डेमो: http://jsfiddle.net/ym5JX/3/

+1

यह वह व्यवहार है जिसे मैं ढूंढ रहा हूं, धन्यवाद! – krische

+0

आपका स्वागत है :-) –

+2

शायद लंबाई 'हैसेल = getSelection()। ToString()। लंबाई> 0' –

6

जैसा कि मैंने टिप्पणी पर पोस्ट, mosuedown + mouseup = click जो वास्तव में क्या हाइलाइटिंग करता है। इस के लिए वैकल्पिक हल,

var isClick = 0; 
$('#click').click(function() { 
    if (isClick == 1) { 
     alert("clicked"); 
    } 
}).mousedown(function() { 
    isClick = 1; 
}).mousemove(function() { 
    isClick = 0; 
}); 

DEMO

+5

यह जांचकर कि माउस 'mousedown' और' mouseup' के बीच स्थानांतरित हो गया है, चालाक: -P –

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