5

mainDiv をクリックすると関数が呼び出されmainDiv()、subDiv をクリックするmainDiv()と とsubDiv()関数の両方が呼び出されます。

subDiv()subDivをクリックしたときに関数だけを呼び出したい。どうすればこれを達成できますか?

コード:

<div onclick="mainDiv()">
  show main div
  <div onclick="subDiv()">
    show sub div
  </div>
</div>
<script type="text/javascript">
  function  mainDiv(){
    alert("main div is clicked");
  }
  function  subDiv(){
    alert("sub div is clicked");
  }
</script>
4

4 に答える 4

3

使用するe.stopPropogation()

HTML

<div onclick="subDiv(event)">  //<--- pass event parameter

javascrip

function  subDiv(e){    

   if(e.stopPropagation){  // check stoppropogation is avilable
      e.stopPropagation();  //use stopPropogation
   }else{
      e.cancelBubble = true;  // for ie8 and below
   }
   alert("sub div is clicked");
}
于 2013-03-07T12:18:24.137 に答える
3

IE8(および同じ会社の古いブラウザー)を除くすべてのブラウザーでstopPropagationを使用できます。ただし、互換性を持たせたい場合は、quirksmodeで説明されているソリューションを使用する必要があります。

   <div onclick="subDiv(event)">

   function  subDiv(e){
     e.cancelBubble = true;
     if (e.stopPropagation) e.stopPropagation();
     alert("sub div is clicked");
   }

デモンストレーション

于 2013-03-07T12:16:52.547 に答える
1
<script type="text/javascript">
function mainDiv() {
    alert("main div is clicked");
}
function subDiv(e) {
    if (!e)
        e = window.event;

    //IE9 & Other Browsers
    if (e.stopPropagation) {
        e.stopPropagation();
    }
    //IE8 and Lower
    else {
        e.cancelBubble = true;
    }
    alert("sub div is clicked");

}

于 2013-03-07T12:23:00.753 に答える
0

これを試して

    <div onclick="mainDiv()">
      show main div
      <div onclick="subDiv(event);">
        show sub div
      </div>
    </div>
    <script type="text/javascript">
      function  mainDiv(){
        alert("main div is clicked");
      }
      function  subDiv(arg){
        arg.stopPropagation();
        alert("sub div is clicked" + arg);

      }
</script>

IE 8以下をサポートするには、arg.cancelBubbleを使用します

于 2013-03-07T12:20:27.830 に答える