【问题标题】:Click() works in IE but not FirefoxClick() 在 IE 中有效,但在 Firefox 中无效
【发布时间】:2011-02-18 05:41:44
【问题描述】:

我的代码很简单,但只适用于 IE 而不是 Firefox。

$(document).ready(function(){
    $('li#first').click();
});

我也试过了:

document.getElementById('first').click();

但这也不起作用。

这是 IE 错误/功能还是其他浏览器不支持 click()

回应cmets:

  1. 有一个带有 ID 的元素 首先,没有了。
  2. 它是对列表元素的单击,可展开元素并将焦点移到 Google 地图元素上。
  3. 在 patrick 的响应中运行代码(向元素添加另一个单击事件)产生了一些有趣的行为。运行$('li#first').click() 时,仅触发了新事件,但使用鼠标物理单击元素同时触发(新的和原始的)。

提前致谢。

【问题讨论】:

  • HTML 是什么样的?页面上有多少个元素的 id 为“first”?
  • 在 IE 中有效,但在 Firefox 中无效。现在这是新事物
  • 还有哪些事件绑定到<li> 元素或其父元素?你怎么知道它被点击了?

标签: javascript jquery firefox internet-explorer


【解决方案1】:

Firefox 确实支持 .click() JQuery 函数。我遇到了同样的问题,直到我在选择器中指定了标签名称。本质上,我有这样的事情:

<a id="vidLeftArrow" blah blah blah>...</a>
$("#vidLeftArrow").click(function () {
   //Do something
});

这没有用。我不得不将 javascript 更改为:

<a id="vidLeftArrow" blah blah blah>...</a>
$("a#vidLeftArrow").click(function () {
   //Do something
});

【讨论】:

    【解决方案2】:

    试试这个 html

    <a id="link" href="url">click here</a>
    

    js

    $(document).ready(function(){
        $("#link").click(function(){
            window.location.href = $(this).attr('href');
        });
    });
    

    如果这是你不想做的事情,也可以尝试这样的事情:

    $(document).ready(function(){
            $("#link")[0].click();
        });
    

    【讨论】:

      【解决方案3】:

      您的代码应该可以在 Firefox 中运行。这是一个完整的 sn-p 证明:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head><title></title>
      <style type="text/css"><!--
      --></style>
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
      <script type="text/javascript"><!--
      jQuery(function($){
          $(document).ready(function(){
              $('li#first')
                  .click(function(){
                      alert("I've been clicked: " + $(this).text());
                  })
                  .click();
          });
      });
      //--></script>
      </head>
      <body>
      
      <ul>
          <li id="first">First item</li>
          <li>Second item</li>
          <li>Third item</li>
      </ul>
      
      </body>
      </html>
      

      【讨论】:

      • 你是对的。点击有效,但这是由情况引起的错误 - 不直接点击。
      【解决方案4】:

      Firefox 不支持 click()。

      运行document.getElementById('first').click()返回以下错误click is not a function

      所以我添加了一段代码来为每个元素添加 click() 功能。 This code 是在一系列痛苦的谷歌搜索后找到的,结果是 this thread

      sn-p 在下面,只需要在页面上包含一次:

      HTMLElement.prototype.click = function() {
         var evt = this.ownerDocument.createEvent('MouseEvents');
         evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
         this.dispatchEvent(evt);
      } 
      

      【讨论】:

      • jQuery 的 click() 版本应该可以在 Firefox 中使用。所以这个答案解决了你遇到的问题?
      • @patrick:是的。 jQuery click() 仅在使用 jQuery 添加事件时才有效。
      • 奇怪。如果我使用 jQuery 的 .click() 函数(jQuery 1.4.2),我可以在 Firefox 中触发由内联“onClick”设置的处理程序。不过,很高兴你让它工作了。
      • 明天我将编辑问题以包含原始代码。
      • 我在 Firefox 3.0.19 中测试了你的代码,但没有在 Firefox 16 中测试。Firefox 16 有什么解决方案吗?
      【解决方案5】:

      您要转到第一个链接吗?您不能通过点击触发链接的默认操作。

      但这里有一个解决方法:

      var link = jQuery("#first>a", this)
      if(!link.onclick) window.open(link.href, link.target || "_self")
      else jQuery(link).click()
      

      来源:http://forum.jquery.com/topic/jquery-a-0-click-not-working

      【讨论】:

      • 它是对列表元素的点击,它会展开元素并将焦点移到 Google Map 元素上。
      猜你喜欢
      • 2010-11-24
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2011-12-17
      • 1970-01-01
      相关资源
      最近更新 更多