2016-10-03 43 views
0

我有li的和ul的作爲一個層次樹。所有李的點擊後點擊一個李 - jquery

但是當我點擊li,所有li的點擊。

例如,當我點擊id="11",我的控制檯日誌讓我這個消息:

11 
10 
9 
1 

的jQuery:

$("li.change_select").click(function() { 
    var category_id = $(this).attr('id'); 
    console.log(category_id); 
}); 

HTML:

<div class="row"> 

    <ul style="cursor:pointer" class="change_select"> 
     <li id="1" class="change_select">بدون دسته بندی 
      <ul style="cursor:pointer" class="change_select"> 
       <li id="2" class="change_select">تست 
        <ul style="cursor:pointer" class="change_select"> 
         <li id="3" class="change_select">تست 2</li> 
         <li id="4" class="change_select">عنوان</li> 
         <li id="5" class="change_select">تست 
          <ul style="cursor:pointer" class="change_select"> 
           <li id="6" class="change_select">تست 
            <ul style="cursor:pointer" class="change_select"> 
             <li id="7" class="change_select">تست 4 
              <ul style="cursor:pointer" class="change_select"> 
               <li id="8" class="change_select">تست 5</li> 
              </ul> 
             </li> 
            </ul> 
           </li> 
          </ul> 
         </li> 
        </ul> 
       </li> 
       <li id="9" class="change_select">شماره 2 
        <ul style="cursor:pointer" class="change_select"> 
         <li id="10" class="change_select">شماره 3 
          <ul style="cursor:pointer" class="change_select"> 
           <li id="11" class="change_select">شماره 6</li> 
          </ul> 
         </li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 

</div> 

回答

3

您可以使用:

e.stopPropagation():爲了防止事件冒泡DOM樹,阻止任何父處理程序被通知的事件。

我的片段:

$("li.change_select").click(function(e){ 
 
    e.stopPropagation(); 
 
    var category_id = $(this).attr('id'); 
 

 
    console.log(category_id); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<div> 
 
    <ul style="cursor:pointer" class="change_select"> 
 
     <li id="1" class="change_select">بدون دسته بندی 
 
      <ul style="cursor:pointer" class="change_select"> 
 
       <li id="2" class="change_select">تست 
 
        <ul style="cursor:pointer" class="change_select"> 
 
         <li id="3" class="change_select">تست 2</li> 
 
         <li id="4" class="change_select">عنوان</li> 
 
         <li id="5" class="change_select">تست 
 
          <ul style="cursor:pointer" class="change_select"> 
 
           <li id="6" class="change_select">تست 
 
            <ul style="cursor:pointer" class="change_select"> 
 
             <li id="7" class="change_select">تست 4 
 
              <ul style="cursor:pointer" class="change_select"> 
 
               <li id="8" class="change_select">تست 5</li> 
 
              </ul> 
 
             </li> 
 
            </ul> 
 
           </li> 
 
          </ul> 
 
         </li> 
 
        </ul> 
 
       </li> 
 
       <li id="9" class="change_select">شماره 2 
 
        <ul style="cursor:pointer" class="change_select"> 
 
         <li id="10" class="change_select">شماره 3 
 
          <ul style="cursor:pointer" class="change_select"> 
 
           <li id="11" class="change_select">شماره 6</li> 
 
          </ul> 
 
         </li> 
 
        </ul> 
 
       </li> 
 
      </ul> 
 
     </li> 
 
    </ul> 
 

 
</div>

3

這是哈開始冒泡DOM樹。您應該使用如下所示的stopPropagation()

$("li.change_select").click(function(e){ 
    e.stopPropagation(); 

    var category_id = $(this).attr('id'); 
    console.log(category_id); 
});