2012-09-13 125 views
1

我有兩個div,一個叫做「mainDesign」,一個叫做「div1」。jquery focus on div

當「div1」被點擊時,調用focusin並且邊框顏色改變。

如果點擊「mainDesign」,「div1」只能聚焦。

該腳本可以工作,但「mainDesign」需要點擊兩次以使其工作,集中注意力後,該腳本完美地工作。

任何想法? 代碼:http://jsfiddle.net/v3DWf/14/

謝謝。

回答

2

重寫了使用鼠標按下和stopPropagation():http://jsfiddle.net/patrickmarabeas/v3DWf/20/

哈哈,看起來像勞斯萊斯馮打我給它。


我刪除事件的內容(),因爲它似乎是不必要的步驟...

這是可以接受的?:http://jsfiddle.net/patrickmarabeas/v3DWf/15/

編輯:各地切換的功能,似乎工作作爲目前打算:http://jsfiddle.net/patrickmarabeas/v3DWf/17/

+0

如果點擊兩次'#div',則不起作用。 –

+0

謝謝帕特里克,效果很好。但是,如果你點擊兩次,它會停止工作:/ – Max6701

+0

我不認爲這是他想要的。我假設他不希望邊框消失,如果他們點擊「div1」,它會與你的代碼一起,因爲「div1」在「mainDesign」裏面 – Shmiddty

0

試試這個:

$("#div1").focusin(function() { 
    $(this).css("border-color","#ff9900"); 
}); 

$("#mainDesign").mousedown(function(){ 
    setTimeout(function(){ 
     if (!$("#div1").is(":focus")) 
      $("#div1").css("border-color","#999999");   
    }, 100); 
}); 

超時是必要的,因爲mousedown會在div模糊之前觸發。

+0

同樣的問題。當聚焦時,div需要兩次點擊才能聚焦。 – Max6701

+0

編輯:對不起我的壞,這個腳本完美,謝謝。無法投票,因爲我需要15個聲望-.- – Max6701

+0

@ Max6701如果這是您要接受的答案,請單擊投票上/下按鈕下方的複選框。 – Shmiddty

-1

那麼問題是,你在.focusout()事件中嵌套了.mousedown()事件。

因此,這裏發生的是,當focusout事件被觸發時,您將.mousedown事件附加到mainDesign div。讓我再次重複一遍,只有在聚焦事件觸發後,纔會連接.mousedown事件。

然後,一旦附加.mousedown事件,下次您在mainDesign div中註冊時,事件將觸發,這就是爲什麼它當前會讓您點擊兩次。

所以最簡單的解決方案是簡單地擺脫.focusout事件。