jquery点击事件未在Internet Explorer上触发

当用户点击标签时,我正在尝试做某事。

 

我试图让click事件被触发它正在使用chrome和safari但不能在IE 11上运行。

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

我试过,绑定,活着,但没有成功。

请帮我解决一下这个。 花了2天时间,在这里疯了。

谢谢。

更换

 $(".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()之前有任何错误$(".my-label").click()该代码将不会被执行。 请注意,普通浏览器中接受的许多“错误”不在IE中。 如果你没有发布在IE11 JavaScript控制台中看到的内容,我认为它很清楚(因此没有错误),但我不知道你是否检查过,所以我认为这是可能的。

您是否在dom ready回调中设置了单击处理程序? 如果不是,您的javascript语句可能在DOM中存在的标签之前执行。

这是一个小提琴: http : //jsfiddle.net/muglio/mTaVR/

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

这是我必须做的才能让事情正常运转。 最好我能猜到,对focus()的调用也会导致它失去焦点,这就是触发IE的变化事件。

另外,关于建议的.click()方法的说明…虽然这将允许事件触发,因此代码可以运行,它不会导致失去焦点,因此所选的索引和值永远不会更改(至少在我的情况下)。 我事件甚至从click事件中调用.trigger(’change’)以试图强制进行更改,并且在事件触发时,所选选项从未更改过。

我知道这是一个黑客,但它的工作非常好,IMO

 // IE hack to get change event to fire properly if ($.browser.msie) { $('select').on('mouseover', function (e) { $(e.target).focus(); }); }