【问题标题】:trigger body click with jQuery使用 jQuery 触发正文点击
【发布时间】:2009-05-28 08:01:57
【问题描述】:

我无法使用 jQuery 触发对 body 标签的点击:

$('body').click();

即使这样也失败了:

$('body').trigger('click');

【问题讨论】:

  • 可能是您在定义点击捕获功能之前触发了点击事件?向我们展示您处理点击的代码。
  • 不想提到旧的东西,但我猜文档的默认正文高度与视口高度不同。因此,使用 css 将高度设置为 100% 将解决此问题,例如html, body{ width: 100%; height: 100%; }

标签: jquery events click triggers


【解决方案1】:

你应该有这样的东西:

$('body').click(function() {
   // do something here
});

当用户点击网页某处时回调函数将被调用。您可以通过以下方式以编程方式触发回调:

$('body').trigger('click');

【讨论】:

  • 我已经完成了你提到的事情。当我亲自点击页面上的任意位置时,点击处理程序完美运行
  • 您的意思是您要触发该事件吗?而不是触发事件,为什么不调用你的点击处理程序会调用的函数呢?
  • 是的,我正在尝试触发事件,我想模拟对身体的点击。
  • 我正在使用 QUnit (docs.jquery.com/QUnit) 编写单元测试,因此我必须触发事件,然后检查处理程序是否按预期工作。
【解决方案2】:

有趣的是,当我替换这个时:

$("body").trigger("click")

有了这个:

jQuery("body").trigger("click")

有效!

【讨论】:

  • 这向我表明您正在使用页面上的其他 JavaScript 框架,这些框架也具有 $() 简写定义的函数。
  • 或相关脚本中的另一个版本的 JQuery.. 我在引用 .each() 时使用 JQGrid 时得到它
【解决方案3】:

我用过以下代码几次,效果很好:

$("body").click(function(e){ 
    // Check what has been clicked:
    var target = $(e.target); 
    if(target.is("#target")){
    // The target was clicked
    // Do something...
  }
});

【讨论】:

    【解决方案4】:

    如果说所有事情都不起作用,请回到基础并测试这是否有效:

    <html>
      <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
      </head>
      <body>
        <script type="text/javascript">
          $('body').click(function() {
            // do something here like:
            alert('hey! The body click is working!!!')
          });
        </script>
      </body>
    </html>
    

    然后告诉我它是否有效。

    【讨论】:

    • hmmm... 请注意你回答你自己的问题 X)。无论如何你可以做 alert($.toString());让您了解另一个干扰 jQuery 的“插件”是什么。
    【解决方案5】:

    正如 Seeker 所提到的,问题可能是您设置 click() 函数太快了。从您的代码 sn-p 中,我们无法知道您将脚本放置在哪里以及它是否在正确的时间运行。

    重要的一点是在文档准备好后运行此类脚本。这是通过将 click() 初始化放在其他函数中来完成的,如下所示:

    jQuery(document).ready(function()
      {
        jQuery("body").click(function()
          {
            // ... your click code here ...
          });
      });
    

    这通常是最好的方法,尤其是当您在 &lt;head&gt; 标记中包含 JavaScript 代码时。如果您将它包含在页面的最底部,那么ready() 函数就不那么重要了,但它可能仍然有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 2013-06-14
      • 2012-08-10
      • 1970-01-01
      • 2011-11-19
      • 2011-08-14
      • 1970-01-01
      相关资源
      最近更新 更多