【问题标题】:select the Div without specific content选择没有具体内容的Div
【发布时间】:2011-07-19 12:37:40
【问题描述】:

问:

我有以下情况:

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

我工作的结构是:(by firebug)

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

jQuery 代码:

&lt;script type="text/javascript"&gt;

    $(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。

提前致谢

【问题讨论】:

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


    【解决方案1】:

    您是否在寻找类似 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
                    }
                });
            });
    

    【讨论】:

    • 不,我不想停止链接事件,我想区分单击链接和单击除链接之外的任何内容部分,如何做到这一点。
    【解决方案2】:

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

    要获取有关哪个元素的信息,请单击使用下面的脚本

    function whichElement(event){
        var tname
        tname=event.srcElement.tagName
        alert("You clicked on a " + tname + " element.")
    }
    

    【讨论】:

      【解决方案3】:

      试试这个:

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

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

      【讨论】:

        【解决方案4】:

        如果您已经在删除链接上有一个点击处理程序,那么只需使用stopPropagation() 停止那里的事件传播。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-29
          • 1970-01-01
          • 2015-08-23
          • 1970-01-01
          • 2017-09-13
          • 1970-01-01
          • 2017-12-27
          • 1970-01-01
          相关资源
          最近更新 更多