选择没有特定内容的Div

时间:2011-03-21 08:45:07

标签: javascript jquery asp.net html jquery-selectors

问:

我有以下情况:

Div包含一个链接,我想只选择没有链接的div,我的意思是,当点击div我想要特定的动作不同于点击链接。通过一些JQuery。

我所处理的结构是:(通过萤火虫)

<div class ="rsAptContent"> sql <a class = "rsAptDelete" href = "#" style ="visibility: hidden;">Delete</a> </div>

JQuery代码:

<script type="text/javascript">

    $(document).ready(function() {


    $(".rsAptContent").click(function(e) {
            ShowDialog(true);
            e.preventDefault();
        });

    });

    function ShowDialog(modal) {
        $("#overlay").show();
        $("#dialog").fadeIn(300);

        if (modal) {
            $("#overlay").unbind("click");
        }
        else {
            $("#overlay").click(function(e) {
                HideDialog();
            });
        }
    }

    function HideDialog() {
        $("#overlay").hide();
        $("#dialog").fadeOut(300);
    } 

</script>`

当我点击链接时,我不想执行Jquery代码,如何选择没有链接的div。

提前致谢

4 个答案:

答案 0 :(得分:4)

您是否正在寻找类似stopPropagation()代码的内容?

$(".rsAptContent").click(function(e) {
            e.stopPropagation();
            ShowDialog(true);
            return false;
        });

    });

这应该阻止链接执行。

http://api.jquery.com/event.stopPropagation/

编辑:区分点击链接并点击除链接

之外的内容的任何部分
    $(".rsAptContent").click(function(e) {
                var $target = $(e.target);
                if($target.is(a){
                  // It's the link.
                }else{
                  // else it's not
                }
            });
        });

答案 1 :(得分:3)

检查点击的目标元素而不是执行操作

获取有关在脚本

下单击使用哪个元素的信息
function whichElement(event){
    var tname
    tname=event.srcElement.tagName
    alert("You clicked on a " + tname + " element.")
}

答案 2 :(得分:2)

试试这个:

$(".rsAptContent").click(function(e) {
        if($(e.target).hasClass('rsAptDelete')) return false;
        ShowDialog(true);
        e.preventDefault();
    });
});

如果目标是链接,则事件被取消;

答案 3 :(得分:1)

如果删除链接上已有点击处理程序,则只需使用stopPropagation()停止事件传播。

$(".rsAptDelete").click(function(e) {
    e.stopPropagation();
});