2011-05-17 21 views
5

jquery ile küçük bir kaydırıcı eklentisi oluşturun. farenin sol veya sağ kontrol divunun üzerindeyken görüntüler% 5 oranında soldan veya sağdan kayıyordu. Tıklatıldığında görüntü,% 100jQuery tetikleme durumunu başlatmadan önce tetikleme durumunu kontrol edin

'a doğru kaymaktadır. Sorun, farenin soldaki sağdaki kontrol divanındaki tüm slayt sırasında fareyi hareket ettirirken farenin farenin sol divanın her zaman tetiklenip tetiklenmediğini kontrol etmesidir. olay tekrar. sonuç, soldan ve sağdan gelen resmin% 5 olduğunu gösteriyor.

Bu gibi fareyi kontrol etmenin bir yolu var mı?

if($(this).mouseover()) 
$(".right").trigger("mouseover"); 

bu

 $(".right",this).bind({ 
      mouseover:function(){ 
       if(vars.current == $("img").length-1 || vars.running) return false; 
       $("img:eq("+(vars.current+1)+")").removeAttr("style").css({position:"absolute",left:"100%","z-index":vars.current+1}).show().animate({left:"95%"}, {queue: false}) 
      }, 
      mouseleave:function(){ 
       if(vars.current == $("img").length-1 || vars.running) return false; 
       $("img:eq("+(vars.current+1)+")").animate({left:"100%"}, {queue: false , complete:function(){ $(this).hide() } }); 
      }, 
      click:function(){ 
       if(vars.current == $("img").length-1 || vars.running) return false; 
       vars.running = true; 
       $("img:eq("+(vars.current+1)+")").animate({left:"0%"}, {queue: false, complete:function(){ 
        $("img:eq("+vars.current+")").hide(); 
        $(this).css({"z-index":0}) 
        vars.current++; 
        vars.running = false; 
        if($(this).mouseover()) 
        $(".right").trigger("mouseover"); 
       } }); 
      } 
     }) 
i diğer cevabını şekilde kullanabilirsiniz

... ama onun deletet gibi bir kontrolör div görünüm kod ....

mouseover:function(){ 
       isOver = 'right'; 
       if(vars.current == $("img").length-1 || vars.running) return false; 
       $("img:eq("+(vars.current+1)+")").removeAttr("style").css({position:"absolute",left:"100%","z-index":vars.current+1}).show().animate({left:"95%"}, {queue: false}) 
      }, 
      mouseleave:function(){ 
       isOver = false 
       if(vars.current == $("img").length-1 || vars.running) return false; 
       $("img:eq("+(vars.current+1)+")").animate({left:"100%"}, {queue: false , complete:function(){ $(this).hide() } }); 
      }, 
      click:function(){ 
       if(vars.current == $("img").length-1 || vars.running) return false; 
       vars.running = true; 
       $("img:eq("+(vars.current+1)+")").animate({left:"0%"}, {queue: false, complete:function(){ 
        $("img:eq("+vars.current+")").hide(); 
        $(this).css({"z-index":0}) 
        vars.current++; 
        vars.running = false; 
        if(isOver) 
        $("."+isOver).trigger("mouseover"); 
       } }); 
      } 

kullanarak var isOver sola veya sağa tetikleyebiliyordum

cevap

31

Bir şeyin içeri girip girmediğini kontrol etmek için: vurgulu seçiciyi kullanabilirsiniz: e. g .: Burada

$('#test').click(function() { 
    if ($('#hello').is(':hover')) { 
     alert('hello'); 
    } 
}); 

Örnek: http://jsfiddle.net/AyAZx/5/

+0

Gerçekten bu çözümün kısalık gibi içinde

Kullanım yerine

$("#idOfYourElement:hover").length > 0 

. Belki de bu nedenle farenin bir öğenin üzerinde olup olmadığını kontrol etmek için ek jQuery işlevi yoktur. Sözdizimi desteklenmeyen – KSev

+6

bu yüzden bir çözüm olup olmadığından emin değilim. – lorddarq

+1

Bu çözüm jQuery 1.9 ve higehr, cf @lorddarq – jones