代码之家  ›  专栏  ›  技术社区  ›  Donald Byrd

使用jquery单击IE6和FF中的标记

  •  1
  • Donald Byrd  · 技术社区  · 15 年前

    我有一个 div 从包含 a . 我需要在javascript中单击它,但是我找不到一种既适用于IE6又适用于FF的方法。

    它在FF中工作,但生成 需要的对象 IE6中的错误:

    $('#mylink').click();
    

    这在IE6中有效,但生成 $(mylink”).get(0).click不是函数 FF中的错误。

    $('#mylink').get(0).click();
    

    有什么关于这是为什么以及什么样的解决方案的想法吗?

    编辑:

    使用触发器返回与IE6中单击相同的错误:

    $('#mylink').trigger('click');
    

    编辑:

    将代码放置在计时器中不会更改行为:

     setTimeout(function() {
      $('#mylink').click();
     }, 100);
    

    编辑:

    作为一种解决方案,它的功能是。但最好能更好地理解这个问题。这不仅仅是一个jquery问题(或者可能根本不是)。ie6 javascript错误来自microsoftajax.js,因此它与此有关。

     var anchor = $('#mylink');
     if (anchor.get(0).click) {
      anchor.get(0).click();
     }
     else {
      anchor.click();
     }
    
    5 回复  |  直到 15 年前
        1
  •  0
  •   Addsy    15 年前

    如果找不到$(“mylink”).click(),但找到了$(“mylink”).get(0).click(),那么可以使用它作为测试的基础吗?

    if ($("#mylink").click)
    {
        $("#mylink").click()
    }
    elseif ($("#mylink").get(0))
    {
        $("#mylink").get(0).click();
    }
    

    我知道这远非理想,但在处理IE6时,情况就是这样。

        2
  •  1
  •   Benoît Vidis    15 年前

    get方法返回dom元素。 你应该用情商来代替。

    $('#mylink').eq(0).click();
    
        3
  •  0
  •   marcgg    15 年前

    用一个怎么样 trigger ?

    $("#mylink").trigger('click');
    
        4
  •  0
  •   rfunduk    15 年前

    尝试:

    $('#mylink').trigger('click');
    

    应该 不过,要和你的第一个例子一样……在IE中执行一些警报以确保元素存在以及所有这些(可能您在某个地方有一个重复的ID或其他东西?).

        5
  •  0
  •   David Hellsing    15 年前

    这个 需要的对象 可能是因为IE找不到 #mylink 及时选择。确保在success回调函数中执行调用,或提供一个超时函数,用于在触发单击之前检查元素是否可用:

    window.setTimeout(function() {
        if ($("#mylink").length) {
            $("#mylink").trigger('click');
            return false;
        }
        window.setTimeout(arguments.callee, 1);
    },1);