0

div(sel_optn1)が1つsel_optn1あり、li(opt1)のクリックを表示し、sel_optn1のサイドクリックを非表示にしていますsel_optn1
正常に動作していますが、子をクリックsel_optn1すると隠れています。

sel_optn1外側のクリックだけを非表示にしたいが、sel_optn1子供のクリックを非表示から除外したいsel_optn1

私が試しているこの例を参照してくださいhttp://jsbin.com/ahuyak/1/edit

誰かが私がこれを達成するのを手伝ってくれる?

4

6 に答える 6

4

チェック関数を更新して、その子要素のクリックもチェックします。

if(e.target.className !== "sel_optn1" && !$(e.target).parents('.sel_optn1').length)
于 2013-01-24T06:38:00.103 に答える
0

これをチェックして

http://jsbin.com/ahuyak/11/edit

すべての子要素をチェックする必要があります

于 2013-01-24T06:45:30.383 に答える
0

クリックターゲットが要素に含まれているかどうかを確認するだけです

if(e.target.className !== "sel_optn1" && !$.contains($(".sel_optn1")[0], e.target))
{
    $('.sel_optn1').css({"display":'none'});
}
于 2013-01-24T06:36:42.240 に答える
0
div(sel_optn1).children().click(function(){stopPropagation ( );})
于 2013-01-24T06:37:12.423 に答える
0

blur代わりに試すことができます:http: //jsbin.com/ahuyak/12/edit

$(document).ready(function(){
   $("#opt1").click(function(e){
     $('.sel_optn1 , :text').show();
     e.stopPropagation();
   });

   $('.sel_optn1 > :text').blur(function(e){
      $('.sel_optn1 , :text').hide();
      e.stopPropagation();
   });
});
于 2013-01-24T06:49:06.533 に答える
0

ドキュメントのクリックイベントをバインドし、クリックされたターゲットがであるかどうかを確認してから、ドキュメント.sel_optn1のクリックイベントをバインドし、そのターゲット.sel_optn1またはその子のいずれかが非表示になっていないかどうかを確認します。

$(document).ready(function(){
  var option = $(".sel_optn1");

  $("#opt1").click(function(e){
    e.stopImmediatePropagation();
    option.toggle();
  });

  $(document).click(function(e){
    var target = $(e.target);
    if(!(target.is(option) || option.find(target).length)){
      option.hide();
    }
  });
});

およびデモ: http: //jsbin.com/ahuyak/15/

于 2013-01-24T07:02:36.110 に答える