2015-10-16 38 views
0

似乎有點瑣碎,但我有一個難以解決的問題,我有一個jquery函數來選擇點擊標籤的類,但問題是,它選擇標籤下面的每個其他標籤點擊以及在結構順序在那裏,我只希望最前面的一個jquery select單個標籤類onclick

例如,如果我有

<div class="1"> 
    <div class="2"> 
     <div class="3"> 
      <p class="4">Hello World</p> 
     </div> 
    </div> 
</div> 

,我點擊了(p)標籤,上面寫着世界你好我會得到一個警告 說4然後3然後2然後1 ,但像我說我只想要第一個女巫在這種情況下是4

這裏是我的jQuery代碼

$("*").dblclick(function(){ 
    if(!$(this).hasClass("") && !$(this).hasClass("main")){ 
     alert($(this).attr('class')); 
    } 
}); 

我知道問題發生,因爲技術上我很點擊所有的標籤,因此continus循環低谷,但我仍然需要一種方法頭等後打破它選擇或者更好的是有沒有辦法只選擇最頂層的對象

+1

使用'event.stopPropagation()'或'返回false;'從事件處理程序 – Tushar

+0

剛剛看了一下'事件bubbling'和'事件capturing' –

回答

1

只需添加返回功能,像這樣:

$("*").dblclick(function(){ 
if(!$(this).hasClass("") && !$(this).hasClass("main")){ 
    alert($(this).attr('class')); 
    return false; 
} 
}); 
+2

小case'返回false;' – Tushar

+0

花花公子感謝你生命的救星這樣一個微小的問題,但它採取了我的大部分時間,每天的 – user2692997

+0

請問但你爲什麼選擇所有課程?讓我發佈一個更有效的答案示例,基於給定的邏輯,除非htis僅用於演示原因。 – Casey

1

我會在事件傳遞給你的點擊函數,並且在完成邏輯之後,使用event.stopPropagation()。這可以防止事件冒泡到父元素

$("*").dblclick(function(event){ 
    if(!$(this).hasClass("") && !$(this).hasClass("main")){ 
     alert($(this).attr('class')); 
    } 
    event.stopPropagation(); 
}); 
+0

'!$(this).hasClass(「」)'不需要 – Tushar

+0

這也是一個很好的解決方案。我會給出這個答案。 – Casey

0

運行此示例並查看您的控制檯。

$("body > div").dblclick(function(){ 
 
    console.log($(this).attr('class')); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="1"> 
 
    <div class="2"> 
 
     <div class="3"> 
 
      <p class="4">Hello World</p> 
 
     </div> 
 
    </div> 
 
</div>

0

你應該閱讀有關event bubblingevent propagation

這裏是函數,你想要做什麼:

$("*").dblclick(function(e){ 
    if(!$(this).hasClass("") && !$(this).hasClass("main")){ 
     alert($(this).attr('class')); 
     e.stopPropagation(); 
    } 
}); 

這裏是工作示例: https://jsfiddle.net/18sawk57/

儘管這不是一個很好的解決偵聽事件附加到所有標籤的頁面上。更好的解決方案是爲例如idclickable class attribute添加應該有事件監聽的元素。

這裏是一個更好的方法另一實施:https://jsfiddle.net/tr7aqask/

這裏是用鼓泡禁止使用jQuery另一實施:https://jsfiddle.net/yc0481sm/