2

この解決策を見たので、この質問が繰り返される可能性があることはわかっています:要素の外側のクリックを検出するにはどうすればよいですか?

要素の外側をクリックすると #main-element を削除したいのですが、その要素には子要素も含まれています。つまり、#main-element の子の 1 つをクリックしても、#main-element を閉じてはいけません

<div id="main-element">
    <div class="test">1</div>
    <div class="test">2</div>
    <div class="test">3</div>
    <div class="test">4</div>
</div>

このソリューションを使用してみました:

$('html').click(function(e){
    if(e.target.id !== 'main-element') {
       $("#main-element").removeClass("open").hide();
    }
});

// For the trigger
$("#click-show").click(function(){
    if($("#main-element").hasClass("open"))
    {
       $("#main-element").removeClass("open").hide();
    }
    else{
       $("#main-element").addClass("open").show();
    }
});
4

3 に答える 3

1

これは役立つかもしれません:

デモ

あなたの要素を表示/非表示にするために、親とクラスをループするために最も近いものを使用してください。

$('html').on('click', function(){
  var mainElement = $('#main-element');
  if($(this).closest(mainElement).length){
      return;
  }
  mainElement.addClass('main-element-closed')
}) 
于 2013-07-31T03:47:39.287 に答える
0
$('*').click(function(){
if($(this).has('#main-element') || $(this).parent().has('#main-element')){
// it will open here
}else{
//put your hide code
}
});
于 2013-08-01T11:01:53.783 に答える
0

jquery is HasClass('your child element class') の関数を jquery.click(document) で参照してみる

于 2014-02-17T10:35:38.547 に答える