2010-06-04 11 views
12

मेरे पास एक बड़ी मेज है जिसमें प्रत्येक सेल 25x25 है और प्रत्येक के अंदर एक div है। प्रत्येक div में "नोड" की कक्षा होती है और उन सभी पर पृष्ठभूमि रंग लागू होता है। मैं कुछ jQuery कोड लिखने की प्रक्रिया में हूं जो माउस div के नीचे माउस चलाते समय प्रत्येक div का रंग बदल देगा।माउसओवर जबकि mousedown

मुझे वर्तमान में यह है कि जब मैं माउस पर काम करता हूं तो यह काम करता है, लेकिन जब मैं माउस बटन भी नीचे रहता हूं तो मैं केवल यह काम करना चाहता हूं। मैंने इसे काम करने के कई अलग-अलग तरीकों की कोशिश की है, लेकिन अब तक मुझे कोई नजर नहीं है, नीचे मेरा वर्तमान कोड है।

$(document).ready(function(){ 
    $(".node").mouseover(function(){ 
    $(this).css({background:"#333333"}); 
}); 
}); 

उत्तर

17

कुछ इस तरह का प्रयास करें:

$(document).ready(function(){ 

    var isDown = false; // Tracks status of mouse button 

    $(document).mousedown(function() { 
    isDown = true;  // When mouse goes down, set isDown to true 
    }) 
    .mouseup(function() { 
    isDown = false; // When mouse goes up, set isDown to false 
    }); 

    $(".node").mouseover(function(){ 
    if(isDown) {  // Only change css if mouse is down 
     $(this).css({background:"#333333"}); 
    } 
    }); 
}); 

संपादित करें:

आप अलग-अलग मद चयन के लिए .node पर एक अलग mousedown क्या करना चाहते हो सकता है।

$('.node').mousedown(function() { 
    $(this).css({background:"#333333"}); 
    }); 

संपादित करें:

यहाँ एक वैकल्पिक पद्धति bind और unbind का उपयोग कर रहा है।

$(document).mousedown(function() { 
     $(".node").bind('mouseover',function(){ 
      $(this).css({background:"#333333"}); 
     }); 
    }) 
    .mouseup(function() { 
    $(".node").unbind('mouseover'); 
    }); 

    $('.node').mousedown(function() { 
    $(this).css({background:"#333333"}); 
    }); 
+0

धन्यवाद- पैट्रिक! अच्छी तरह से काम। – Stanni

+1

+1 - 'mousedown' (और अन्य राज्यों' की जांच करने का कोई तरीका क्यों नहीं है ... हमारे पास उन्हें 'alt', 'ctrl', आदि के लिए है ... माउस क्यों नहीं?) मेरे बाहर है, यहां तक ​​कि डीओएम 2 में जब तक मुझे कल्पना में कुछ याद नहीं आया। –

+0

@ स्टैनी - जैसा कि निक क्रेवर ने नोट किया था, अगर 'मूसडाउन' '.node' तत्व से शुरू होता है, तो उसे पृष्ठभूमि नहीं मिलेगी। क्या यह आपके लिए उपयुक्त है? – user113716

-2

खैर अगर माउस बटन नीचे चला जाता है, पृष्ठभूमि बदलता है, और अगर ऊपर जाता है, वापस परिवर्तन ...

$(".node").mouseup(function(){ 
    $(this).css({background:'#cccccc'}); 
}).mousedown(function(){ 
    $(this).css({background:'#333333'}); 
}); 

यह आपके लिए क्या देख रहे हैं?

http://api.jquery.com/mousedown/

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