点击IE6的标签和FF使用jQuery
-
18-09-2019 - |
题
我具有从其中包含一个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);
不隶属于 StackOverflow