2011-07-27 13 views
6

मेरे पास एक परिदृश्य है जिसमें मैं तत्व पर क्लिक करता हूं #stationLink। जब मैं इसे दोबारा क्लिक करता हूं तो मैं जानना चाहता हूं कि तत्व पहले से ही क्लिक किया गया था या नहीं। मैं कोशिश की थीकैसे पता चलेगा कि कोई तत्व पहले से ही क्लिक किया गया है jquery

var a=false; 
$("#stationLink").click(function(){ 
    $(this).click(function(){ 
    a = true 
    }); 
    console.log(a); 
}); 

मैं false दो बार हो रही है उसके बाद ही true .. मुझे लगता है कि मैं कुछ याद आ रही है। या क्या ऐसा करने का कोई और तरीका है?

उत्तर

9

यह आप क्या चाहते हैं क्या करना चाहिए (एक काउंटर रखने सहित के रूप में मैंने देखा है कि आप कुछ टिप्पणी में चाहते हैं)

$("#stationLink").click(function(e){ 
    var $this = $(this); 
    var clickCounter = $this.data('clickCounter') || 0; 
    // here you know how many clicks have happened before the current one 

    clickCounter += 1; 
    $this.data('clickCounter', clickCounter); 
    // here you know how many clicks have happened including the current one 

}); 

.data() विधि आप डोम तत्व के साथ काउंटर की दुकान का उपयोग करना, और इस तरह से आप एक ही हैंडलर को कई तत्वों पर लागू कर सकते हैं, क्योंकि प्रत्येक का अपना काउंटर होगा।

http://jsfiddle.net/gaby/gfJj6/1/

1

मैं आमतौर पर यह

$("#stationLink").click(function(){ 
$(this).addClass("x_visited") 
} 

तो फिर तुम उदाहरण

1
var stationLink_clicked = false; 

$("#stationLink").click(function(){ 
    console.log('Already clicked? ' + stationLink_clicked); 
    /* do stuff */ 

    stationLink_clicked = true; 
}); 
4

आप एक विशेषता आप जांच कर सकता है जोड़ सकते हैं के लिए $("#stationLink").hasClass('x_visited'); साथ उस के खिलाफ जांच कर सकते हैं करने के लिए एक वर्ग .chosen नामित या .x_visited जोड़ें:

$("#stationLink").click(function(){ 
    $(this).attr("hasBeenClicked", "true"); 
}); 

मुझे यह आइटम रखने के लिए वैश्विक var का उपयोग करना पसंद नहीं है सरल कारण के लिए क्लिक किया गया है कि यदि आपको एक से अधिक वस्तुओं का ट्रैक रखना है तो यह थोड़ा गन्दा हो सकता है। मैं गधा वर्ग या विशेषता को पसंद करते हैं, जैसा कि आप तत्व है कि क्या यह

4

इस संस्करण में क्लिक किया गया है पर देख सकते हैं क्लिक्स की संख्या रिकॉर्ड:

$("#stationLink").click(function() { 
    var clickCount = $(this).data('clickCount') || 0; 

    if (clickCount > 0) { 
     // clicked `clickCount` times 
    } 

    $(this).data('clickCount', clickCount + 1); 
}); 

क्लिक गणना उपयोग

$("#stationLink").data('clickCount', 0); 
+0

वहाँ किसी भी तरह से पता है कि कैसे कई बार तत्व क्लिक किया गया है है पर डेमो? –

+0

हां। मैं एक पल में गिनती शामिल करने के लिए उत्तर अपडेट कर दूंगा। –

3
रीसेट करने के लिए

ऐसा इसलिए है क्योंकि आप वास्तव में तत्व पर क्लिक करने के लिए पहली बार एक और क्लिक हैंडलर बाध्यकारी कर रहे हैं। बस उस हैंडलर को हटा दें।

var clicked = false; 
$("#stationLink").click(function(){ 
    clicked = true 
    //Code to toggle if required. 
}); 
2

एक अन्य विकल्प है:

$('#stationLink').click(function(){ 
    $(this).data('clicked', true); 
}); 

console.log($(this).data('clicked')); 

मुझे लगता है कि इस विधि सबसे jQuery ui द्वारा प्रयोग किया जाता है।

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