1

「mainDesign」と呼ばれる 1 つと「div1」と呼ばれるボックスの 2 つの div があります。

「div1」をクリックすると focusin が呼び出され、ボーダーの色が変わります。

「div1」は、「mainDesign」をクリックした場合にのみフォーカスアウトできます。

スクリプトは機能しますが、「mainDesign」を機能させるには 2 回クリックする必要があります。フォーカスを外した後、スクリプトは完全に機能します。

何か案は?コード: http://jsfiddle.net/v3DWf/14/

ありがとう。

4

4 に答える 4

2

mousedown と stopPropagation() を使用して書き直しました: http://jsfiddle.net/patrickmarabeas/v3DWf/20/

ハハ、ロイス・フェンが私を打ち負かしたようです。


不必要なステップのように見えるので、focusout() を削除しました...

これは受け入れられますか?: http://jsfiddle.net/patrickmarabeas/v3DWf/15/

編集:機能を切り替えました。現在は意図したとおりに動作しているようです: http://jsfiddle.net/patrickmarabeas/v3DWf/17/

于 2012-09-13T16:34:48.310 に答える
1

.mousedown()内側で伝播の使用と停止を切り替えることができます。

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

于 2012-09-13T16:47:52.900 に答える
0

これを試して:

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

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

divがぼやける前にマウスダウンが発生するため、タイムアウトが必要です。

于 2012-09-13T16:45:14.390 に答える
-1

問題は、.focusout() イベント内に .mousedown() イベントをネストしたことです。

ここで何が起こっているかというと、focusout イベントがトリガーされると、.mousedown イベントが mainDesign div にアタッチされます。繰り返しますが、.mousedown イベントは focusout イベントがトリガーされるまでアタッチされません。

その後、.mousedown イベントがアタッチされると、次に mainDesign div でマウスダウンしたときにイベントが発生するため、現在 2 回のクリックが必要です。

したがって、最も簡単な解決策は、単に .focusout イベントを取り除くことです。

于 2012-09-13T16:45:25.223 に答える