jquery ON事件未在IE8中触发

时间:2014-01-10 03:51:01

标签: javascript jquery internet-explorer-8

我做了这个jsfiddle来演示我的意思,但遗憾的是JSfiddle本身似乎不适用于IE8所以你需要在一个独立的页面中测试这个jsfiddle代码: http://jsfiddle.net/4Bdbn/

使用IE8,上面的ON事件不会触发,绝对没有任何反应。甚至在函数中添加警报(“hi”)也不起作用;它没有被调用,加上控制台中没有报告错误。

另一方面,如果有多个事件触发相同的功能,例如.on("touchstart click",....,是否需要e.preventDefault()来防止多次执行某个函数?在所有情况下?

jQuery版本1.8.3所以我相信IE8是受支持的浏览器。

PS。我在浏览器模式IE8中使用IE10。

编辑:我的简单测试页面在IE8中不起作用(对我而言): http://www.personaltrainer.com.au/test.php

相关的代码部分是......

<script type="application/javascript">
$(document).ready(function () {
    $("body").on("click touchstart",".something",function(e) {
        $(this).text($(this).text() + " "+e.type);
        e.preventDefault();
    });
});
</script>

谢谢!

2 个答案:

答案 0 :(得分:1)

您在脚本代码上使用了无效的type属性(application/javascript)。将其更改为text/javascript或简单地将其全部删除。

这在IE8(真实版本)

中工作得很好
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script>
$(document).ready(function () {
    $("body").on("click touchstart",".something",function(e) {
        $(this).text($(this).text() + " "+e.type);
    });
});
</script>

答案 1 :(得分:-1)

也许你应该首先删除touchstart事件以检查它是否有效! IE8实际上不支持触摸动作!

$(function () {
    $("body").on("click",".something", function(e) {
        $(this).text($(this).text() + " " + e.type);    
        //e.preventDefault();   
    });
});