2013-12-12 50 views
0

我在找一個jQuery函數執行以下操作:如何從點擊排除DIV中的元素

  • 如果我點擊無處不在的div內(但這個div中的元素),代碼執行。
  • 如果我點擊這個div內的html元素,注意到會發生。

+6

您可以檢查,如果'e.target'具有相同的'id'爲您'div'被允許點擊。 – Teemu

回答

0

你需要測試,如果點擊的目標是this。小提琴這裏:http://jsfiddle.net/ZBC43/

$('div').on('click', function(e) { 
    if (e.target !== this) return; 
    alert('div clicked'); 
}); 
0

本次活動是通過元素除名,直到發出喀嚓聲元素的元素被發現。 解決方案:

  1. 測試,如果目標元素是一樣的delegateTarget
  2. 您的內部元素的事件設置爲空函數
0

你需要的東西像這樣(我試圖找到父母分度類):

<div class='foobar'> 
    <span>child1</span> 
    <span>child2</span> 
</div> 
<span>child3</span> 

<script> 
$('.foobar').on('click', function(e) { 
    var testelem = $(e.target); 
    while (testelem != undefined && !testelem.hasClass('foobar')){ 
     testelem = testelem.parent(); 
    } 

    if (testelem != undefined && testelem.hasClass('foobar')) { 
     alert('code'); 
    } 
}); 
</script> 

http://jsfiddle.net/eaVzx/

0

試試這個:

$("div").click(function(e) { 
     if (e.target !== this) return; 
     alert("inside a div"); 
    }); 
0

您可以使用tagName dom屬性來獲取當前目標元素名稱。

TagName:返回元素的名稱。

HTML

<div id="myDiv" style='display:inline-block; width:300px;'><span style='display:inline-block;'>Hello Click here</span><br /><span style='display:inline-block;'>Click here</span></div> 

的Javascript

$(document).ready(function(){ 
$('#myDiv').click(function (e) {   
    if (e.target.tagName == "DIV") { 
     alert('Clicked on Div'); 
    } 
    else{ 
     alert('Clicked on Inner Element'); 
    } 
}); 
}); 

Try in fiddle

OR也使用nodeName屬性來獲取當前元素。

NodeName:以字符串的形式返回當前節點的名稱。

Try in fiddle 2