如何从点击中排除div内的元素

时间:2013-12-12 11:23:34

标签: javascript jquery html

我正在寻找一个jquery函数来执行以下操作:

  • 如果我点击div内的任何地方(但是这个div中的元素),代码就会被执行。
  • 如果我点击此div中的html元素,请注意。

        

5 个答案:

答案 0 :(得分:0)

事件遍历元素,直到找到具有click元素的元素。 解决方案:

  1. 测试目标元素是否与delegateTarget相同
  2. 您将内部元素的事件设置为空函数

答案 1 :(得分:0)

您需要测试点击的目标是否为this。在这里小提琴:http://jsfiddle.net/ZBC43/

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

答案 2 :(得分:0)

你需要这样的东西(我试着在你的班级找到父div):

<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/

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分: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