2016-03-27 6 views
0

は、私がクリックしたli要素を識別するために問題を抱えている、彼女は、HTMLの構造である:私は私にProduct_5を与えるProduct_5警告にクリックのでどのようにワンクリックを取得するためにクリックネストしたli要素の後に

<section class="right_menu" id="right_menu"> 
<div class="menu_pusher"> 

    <ul id="0"> 
    <li><a href="#">Product_1</a></li> 
    <li><a href="#">Product_2</a></li> 
    <li><a href="#">Product_3</a></li> 
    <li><a href="#">Product_4</a></li> 
    <li class="Product_5"><a href="#">Product_5</a> 
     <ul> 
     <li class="Article_1"><a href="#">Article_1</a> 
      <ul> 
      <li><a href="#">Detail_1</a></li> 
      <li><a href="#">Detail_2</a></li> 
      <li><a href="#">Detail_3</a></li> 
      </ul> 
     </li> 
     <li><a href="#">Article_2</a></li> 
     <li><a href="#">Article_3</a></li> 
     <li><a href="#">Article_4</a></li> 
     </ul> 
    </li> 
    <li><a href="#">Product_4</a></li> 
    </ul> 

</div> 
</section> 

ので大丈夫ですが、私はArticle_1警報Article_1とArticle_5 agein、それはダブルクリックのように見えるが、私は今の方法を与えてくださいclikcしたとき。

function has_ul(element){ 
    if((element.getElementsByTagName('li').length >= 1)) 
     return true; 
    else 
     return false; 
} 

$(document).ready(function() 
{ $('#right_menu .menu_pusher ul li').on('click',rout);}) 

var timeout  = 500; 
var closetimer  = 0; 
var ddmenuitem = 0, 
open = false; 

function rout(){open?jsddm_close():jsddm_open(this);} 

function jsddm_open(el) 
{ 
//open=true; 
jsddm_canceltimer(); 

    if(has_ul(el)){ 
     var lef = parseInt($('.menu_pusher').css("left")) - 220; 
     alert(el.className); 
     $('.menu_pusher').css('left', lef); 
     return false; 
    } 
} 

function jsddm_close() 
{ 

if(ddmenuitem) ddmenuitem.css('display', 'none'); 
open=false;} 

function jsddm_timer() 
{ closetimer = window.setTimeout(jsddm_close, timeout);} 

function jsddm_canceltimer() 
{ if(closetimer) 
    { window.clearTimeout(closetimer); 
     closetimer = null;}} 

だから私はli要素に到達する方法はクリック:

これはjavascriptのコードですか?ここでは、この例へのリンクは次のとおりです。

https://jsfiddle.net/rwqc9bje/

+0

申し訳ありません - 私は2つの李要素のクリックを取得するように?この質問は正しい – cyprian

+2

イベント変数をクリック関数に渡してevent.stopPropagation()を呼び出す必要があります。そのため、親の子のクリックハンドラを呼び出すことはできません。 –

答えて

0

は、これは、この二重のイベント動作を避ける必要があります...代わりに李の要素にイベントを処理するようにしてください。

+0

あなたは例を挙げることができます – cyprian

+0

Jクエリセレクタを次のように変更してみましょう:$( '#right_menu .menu_pusher ul li a') –

+0

これを行うと、li要素をどのように取得する必要がありますか? – cyprian

関連する問題