我做了这个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>
谢谢!
答案 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();
});
});