在Internet Explorer中,jQuery的click事件未被触发。

4

当用户点击标签时,我想要做一些事情。

<label class="my-label"> ....

我正在尝试触发点击事件,它在Chrome和Safari上正常工作,但在IE 11上无法正常工作。

$(".my-label").click(function(){
});

我尝试使用on、bind、live,但都没有成功。

请帮我解决这个问题。我已经花了两天时间了,快疯了。

谢谢。


2
你有完整的代码示例吗? - dotty
以下所有答案都是正确的,只是用click代替click()在Safari或Chrome中不起作用,正如其他人也指出的那样。我猜测你的代码中其他地方有错误,IE不喜欢,而这些错误在其他浏览器中被忽略了... - A.O.
3个回答

5

替换

$(".my-label").click

使用

$(".my-label").click();

你没有使用 click 方法,而是只是引用了它。我不知道为什么它在Safari/Chrome中能够工作:这是不应该的。

编辑:用户编辑了问题并提供了更多上下文。

很可能,现在它不起作用的原因是因为你缺少了一个文档准备就绪的条件。请使用以下代码替换:

$(document).ready(function(){ 

    console.log("document ready!");
    $(".my-label").click(function(){
        console.log("click function!");
    });

});

请在你的JavaScript控制台中反馈你看到的内容。
如果现在它正在工作,那么Safari/Chrome已经可以正常工作的原因是因为在这些浏览器中,代码是在DOM渲染后执行的。那只是运气。您绝不能依赖于DOM是否准备就绪:始终将引用任何DOM节点的所有代码放在$(document).ready()调用内。
如果在IE11中仍然无法工作,则应为问题提供更多上下文。例如,console.log($(".my-label").length)返回什么?如果是0,则表示IE11未找到该节点。同样,唯一可能发生这种情况的原因是DOM没有准备好或者代码本身没有得到调用。如果在$(".my-label").click()之前有任何错误,那么该代码将不会被执行。请注意,在正常浏览器中接受的许多“错误”在IE中是不被接受的。如果您不发布在IE11 JavaScript控制台中看到的内容,我假设它是清晰的(因此没有错误),但我不知道您是否甚至检查了这一点,所以我认为这是可能性。

@saturnix: 我在问题上犯了个错误,请再次检查一下问题。我肯定是使用了你提到的方法...但还是没有成功。 - Nicholas

2

你是否将点击处理程序设置在dom就绪回调内部?如果没有,你的javascript语句可能会在标签存在于DOM之前执行。

这里有一个fiddle:http://jsfiddle.net/muglio/mTaVR/

$(document).ready(function() {
    $('.my-label').on('click',function(evt) {
       alert('clicked');
    });
});

0

这是我为了使事情正常工作所必须做的。我最好的猜测是,对focus()的调用也会导致它失去焦点,这就是IE触发change事件的原因。

此外,关于建议使用.click()方法的说明...虽然这将允许事件触发,以便可以运行代码,但它不会导致


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接