2011-04-21 32 views
1

顯示我想要顯示在的focusIn按鈕按鈕,點擊後做一些動作或隱藏事件的內容是按鈕:jQuery的 - 點擊上的focusIn

$(".editableDiv").live('focusin', function(){ 
    // show button under the .editableDiv div 

    $("#button").live('click', function(){ 
     // do action 
    }); 
    $(".editableDiv").live('focusout', function(){ 
     // hide button 
    }); 
}); 

它顯示了焦點的按鈕,但是當按鈕點擊後,該操作將被忽略,該按鈕會立即隱藏,就像聚焦輸出優先於點擊一樣。當我嘗試刪除聚焦部分時,動作完成,但按鈕仍然可見...但我需要在聚焦時隱藏該按鈕。

這似乎很簡單......但我不明白爲什麼它不工作 - 任何提示將不勝感激。

+0

您正在執行的操作是「onclick」?你可以將'click'的綁定移動到'focusin'處理器的按鈕之外,因爲它被id綁定。 – 2011-04-21 17:00:20

+2

你真的,真的不應該使用現場。使用'委託()'http://paulirish.com/2010/on-jquery-live/ – 2011-04-21 17:02:09

+0

此外,你可以告訴我們這個jsbin.com或其他? – 2011-04-21 17:02:42

回答

1

發生了什麼事是聚焦點是觸發並隱藏按鈕,然後才能接收點擊事件。

那麼爲什麼不在幾毫秒後隱藏點擊/聚焦的按鈕?

$(".editableDiv").live('focusin', function(){ 
    // show button under the .editableDiv div 
    $("#button").show(); 
}).live('focusout', function(){ 
    setTimeout(function(){ 
     $("#button").hide(); 
    },50); 
}); 
$("#button").live('click', function(){ 
    // hide button 
    alert('test'); 
    $("#button").hide(); 
}); 

http://jsfiddle.net/userdude/E2Cyx/2/

+0

廣泛使用後,這是正確的答案。 – justkt 2011-04-21 17:40:24

+0

這真的是個好主意......並且它在工作,謝謝! – honzzz 2011-04-21 17:45:34

+0

@justkt - 謝謝,我不得不做類似的事情。 @honzzz - 如果您認爲這是正確的答案,請點擊答案左側的投票計數下方的複選標記。 :) – 2011-04-21 17:45:44

2

您需要將您的處理程序分配拖動一下。現在,按鈕單擊和聚焦輸出處理程序僅限於第一個focusin。

最重要的是存在not being able to know(不使用IE特定信息)的問題,什麼事件觸發了重點(因此你不能將按鈕隔離爲源)。最好的解決方案似乎是超時解決方案。我會建議代碼,如this answer to your question中提供的代碼。

+0

演示:http://jsfiddle.net/userdude/RqGKd/ – 2011-04-21 17:17:30

+0

哎呀,我有動作倒退秒。我認爲問題仍然存在,主要是,按鈕被隱藏之前,它可以收到點擊:http://jsfiddle.net/userdude/RqGKd/1/ – 2011-04-21 17:19:12

+0

這產生了與我上面的代碼相同的結果。專注似乎隱藏了按鈕,然後點擊它就可以註冊。 – honzzz 2011-04-21 17:22:34

0

這只是當你點擊一個按鈕時,你基本上關注IT,因此,它激發了聚焦/模糊事件,因爲只有焦點。

+0

它看起來像 - 但我怎麼能避免它? – honzzz 2011-04-21 17:15:56

0

您需要防止該按鈕單擊處理事件傳播,因爲如果不是,按鈕獲得焦點,而事件的內容函數被調用。

​​
+0

看起來,點擊甚至沒有被調用,因爲在此之前調用聚焦函數...所以在該點擊函數內部添加.stopPropagation()也不會被調用。 – honzzz 2011-04-21 17:37:49

+0

是的,沒錯!點擊事件綁定必須來自焦點 – 2011-04-26 07:52:26