我具有从其中包含一个div一个AJAX调用返回一个a。我需要点击它在JavaScript,但我无法找到,在这两个IE6和FF的工作方式。

这在FF但产生的所需的对象错误在IE6:

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

这个工作在IE6,但生成的 $( “#myLink的”)。得到(0)。单击不是一个函数的错误在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();
 }
有帮助吗?

解决方案

如果没有找到$( “#myLink的”)。点击(),但$( “#myLink的”)。得到(0)。点击(),那么你可以使用这个作为测试的基础?

例如

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

很不理想,但我知道这样是事情的方式与IE6打交道时

其他提示

在get方法返回的DOM元素。 您应该使用如来代替。

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

如何使用触发

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

尝试:

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

的是一样的你的第一个例子,但...不要在IE浏览器的一些提醒,以确保该元素存在,并且所有的(也许你有地方重复的ID或东西吗?)。

所需的物体很可能产生,因为IE不能及时发现#mylink选择器。请确保你做的呼叫成功的回调函数或提供检查,如果该元素是触发点击之前提供超时功能:

window.setTimeout(function() {
    if ($("#mylink").length) {
        $("#mylink").trigger('click');
        return false;
    }
    window.setTimeout(arguments.callee, 1);
},1);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top