2011-10-12 45 views
0

我有一個jQuery腳本,其中如果您使用mouseenter和元素,則會顯示某些內容,並且在您使用鼠標時會消失。我試圖在用戶點擊時解除綁定,以便在用戶離開時「顯示」一直顯示。這是做到這一點的正確方法嗎?如果是這樣,有人可以幫助我得到這個腳本的工作?單擊時不能解除鼠標離開

謝謝!

$('.block').live("mouseenter",function(){ 
     var id= $(this).attr('id'); 
     $('#arrowPreview'+id).show(); 


    }).live("mouseleave",function(){ 
     var id= $(this).attr('id'); 
     $('#arrowPreview'+id).hide(); 

    }).live("click",function(){ 
     var id= $(this).attr('id'); 
     $('#arrowPreview'+id).show(); 
     $(this).unbind("mouseleave"); 
    }); 

謝謝!

+1

必須用'模具()'取消綁定活的事件處理程序 – amcc

回答

1

所以我不不要以爲你想要的是完全可能的。問題似乎是使用.live並解除綁定。您可以解除與.die的鼠標事件綁定事件。但是,使用的選擇器必須與最初用於綁定事件的選擇器匹配,在您的案例中爲.block。我在想這顯然是不好的。的.die

http://jsfiddle.net/EZNDg/

例如撥弄我認爲,相反,你需要使用一個明確的選擇當前元素,所以可能使用.each您選擇,然後用$(本)綁定來綁定。這應該允許死亡工作。我會把這個小提琴弄亂,看看它是否屬實。

+0

謝謝,這清理了我! – hellomello

2

您需要創建的功能對事件執行的變量,以確保您的JavaScript的完整性,從而爲你的例子:有live勢必

var fShow = function(){ 
    var id= $(this).attr('id'); 
    $('#arrowPreview'+id).show(); 
}; 

var fHide = function(){ 
    var id= $(this).attr('id'); 
    $('#arrowPreview'+id).hide(); 
}; 

var fClick = function(){   
    var id= $(this).attr('id'); 
    $('#arrowPreview'+id).show(); 
}; 

$('.block').bind('mouseenter',fShow); 
$('.block').bind('mouseleave',fHide); 
$('.block').unbind('mouseleave',fHide); 
+1

我相信這是同我的劇本,只是寫在以不同的方式 – hellomello

+0

呀,腳本的目標是一樣的你原來的,但實現不同。請參閱http://api.jquery.com/unbind/瞭解您爲什麼不工作的具體細節。綁定/取消綁定作爲函數變量而不是匿名函數會導致問題。 – Justin

+0

我試過你的腳本,但它仍然不起作用? – hellomello