2012-09-13 86 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事件。