Jquery专注于div

时间:2012-09-13 16:28:03

标签: javascript jquery

我有两个div,一个名为“mainDesign”,另一个名为“div1”。

单击“div1”时,将调用focusin并更改边框颜色。

“div1”只能在单击“mainDesign”时进行聚焦。

该脚本有效,但需要点击“mainDesign”两次以使其正常工作,在重点突出后,脚本才能完美运行。

有什么想法吗? 代码:http://jsfiddle.net/v3DWf/14/

感谢。

4 个答案:

答案 0 :(得分:2)

使用mousedown和stopPropagation()重新编写:http://jsfiddle.net/patrickmarabeas/v3DWf/20/

哈哈,看起来罗伊斯冯打败了我。


我删除了focusout(),因为它似乎是一个不必要的步骤......

这可以接受吗?:http://jsfiddle.net/patrickmarabeas/v3DWf/15/

编辑:切换功能,似乎按预期工作:http://jsfiddle.net/patrickmarabeas/v3DWf/17/

答案 1 :(得分:1)

您可以切换到使用.mousedown()并停止传播内部传播。

http://jsfiddle.net/v3DWf/18/

答案 2 :(得分:0)

试试这个:

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

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

超时是必要的,因为moused会在div模糊之前触发。

答案 3 :(得分:-1)

问题是你在.focusout()事件中嵌套了.mousedown()事件。

所以这里发生的事情是,当触发焦点事件时,您将.mousedown事件附加到mainDesign div。让我再次重复一次,在触发焦点事件之前,不会附加.mousedown事件。

然后,一旦附加了.mousedown事件,下次你在mainDesign div中进行操作时,事件就会触发,这就是为什么它当前会让你点击两次。

所以最简单的解决方案就是简单地摆脱.focusout事件。