2011-07-22 45 views
2

如果點擊div(panel1)中的任何元素,如何判斷使用jQuery?我有這樣的一段代碼,我用它來顯示/隱藏彈出:使用jQuery來確定div中是否有任何元素被點擊

$('body').click(function (e) { 
     if ($(e.target).attr('id') == 'link1') { 
      $('#panel1').show(); 
     } else { 
      $('#panel1').hide(); 
     } 
    }); 

的問題是,彈出(PANEL1)如果我點擊PANEL1內的任何控制/元素被駁回。我想保持panel1打開,除非點擊panel1外部的區域(或者再次點擊link1)。我如何修改此代碼以實現此目的?謝謝...

回答

5

試試這個

$('#panel1').click(function (e) { 
     e.stopPropagation(); 
     //Other code if you want to execute anything on panel click. 
    }); 

$('body').click(function (e) { 
     if($("#panel1").is(":visible")) 
      $('#panel1').hide(); 
    }); 
+0

好記的這個ideea! ;) –

+0

+1爲正確使用stopPropagation() – Joshua

+0

謝謝@ShankarSangoli。我還需要我的原始代碼以激活彈出窗口,但與此代碼結合使用時,它可以按照我的需要工作。 – Prabhu

0
$('body').click(function (e) { 
     if ($(e.target).attr('id') == 'link1') { 
      $('#panel1').show(); 
     } else if($(e.target).attr('id') != 'panel1') { 
      $('#panel1').hide(); 
     } 
    }); 
1

撥打以下HTML標記:

<body> 
<div id="div1"> 
... all the body content here 
</div> 
<div id="panel1"> 
</div> 

我想彈出#PANEL1定位出正常流動的,無論如何,所以它是沒問題。 然後在jQuery中使用div1而不是body,這就是它:-)

相關問題