2016-03-22 2 views
4

<div>をエレメントエリアをクリックすると閉じられるようにします。それは発火しないように見え、ログやアラートのいずれも消えません。私は周りを見回して、すべてが正しいように見える?onBlur()が正しく機能していない

jQueryの

$('document').ready(function() { 
    updateCart(); 

    $(".shell").click(function (e) { 
     e.preventDefault(); 
     $(".shell-pop").fadeIn(300, function() { $(this).focus(); }); 
    }); 

    $(".shell-pop").on('blur', function() { 
     $(this).fadeOut(300); 
     window.alert("work"); 
     console.log("works"); 
    }); 
}); 

HTML

<div class="options-area"> 
    <div class="options-popup shell-pop"> 
     <div class="swatches"> 
      <div class="colors-shell colors" id="green"> 
       <p class="prices-for-swatch">$14.23</p> 
      </div> 
      <div class="colors-shell colors" id="pink"> 
       <p class="prices-for-swatch">$7.23</p> 
      </div> 
      <div class="colors-shell colors" id="blue"> 
       <p class="prices-for-swatch">$11.25</p> 
      </div> 
      <div class="colors-shell colors" id="orange"> 
       <p class="prices-for-swatch">$10.23</p> 
      </div> 
      <div class="colors-shell colors" id="default-shell"> 
       <p class="prices-for-swatch">FREE</p> 
      </div> 
      <div class="colors-shell colors" id="exit"> 
       <img src="img/Silhouette-x.png" class="x-logo" alt="exit" /> 
       <p class="closeit">CLOSE</p> 
      </div> 
      <div class="shell square"> 
       <img src="img/controllers.png" class="item-icon" alt="controller-piece"> 
       <p class="name-of-item">Shell</p> 
       <p id="shell_Price1" class="items-price">0.00</p> 
      </div>   
+1

「.shell-pop」は何ですか?要素が入力要素でない場合、ブラーイベントは発生しません –

+0

シェルポップはdivであり、より多くのdivを含んでいます。私が見た多くの例はdivで作業していたので、なぜそれが失敗するのかはわかりません。 –

+0

divで 'blur()'は動作しません。参照してください:http://stackoverflow.com/a/1259769/1231271 –

答えて

3

はあなたの<div>tabindexを与えます。

のtabIndexグローバル属性は、要素 それは シーケンシャルキーボードナビゲーションに参加する必要がある場合、入力フォーカス(フォーカス可能である)をとり、そしてもしそうであれば、どのような位置にすることができるかどうかを示す整数です。

次...

<div tabindex="-1"></div> 

$('div').on('blur', function() { 
    console.log('blurrr'); 
}); 

JSFiddle Link守って - フォーム要素の簡単なデモ

+1

これにより、要素がフォーカスを受け取ることができます。つまり、ブラーイベントが発生する可能性があります。 '0'のtabindexは、要素をキーボード移動可能にする。 – Fenton

+1

@Sohneeこれは本当です!ありがとう、私は異なる値を説明するリンクを含めました – scniro

+0

ああ、私は参照してください。私はそれを見ましたが、それはページを通して文字通りのタブでしかないと仮定しました。私はそれについてより多くの研究を引き受けてはならない。 –

1

ぼかしますのみ火を。あなたは別のアプローチを考慮する必要があります。たとえば、.shell-popのクリックイベントを監視し、現在の状態を判断できます。 Like

$(document).on('click', function(e){ 
    if ($(e.target).is('.shell-pop')) { 
     alert('focused'); 
    } else { 
     alert('blured'); 
    } 
}); 
+0

+1これは一般的に、要素などの外側をクリックするとフォーカスできない要素を閉じるのに好ましい方法です。 – adeneo

関連する問題