首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在removeChild之后不触发Ontouchstart事件

在removeChild之后不触发Ontouchstart事件
EN

Stack Overflow用户
提问于 2012-06-03 20:49:42
回答 1查看 725关注 0票数 0

我在为JavaScript编写iPad代码时发现了一个问题。我还没有在其他HTML5触摸浏览器上测试过这一点,所以我不知道这是iPad /还是其他更普遍的错误。

问题是,如果一个对象附加了ontouchstart事件侦听器,它最初运行良好,但是在我从它的父容器中删除它并再次添加它之后,它就停止工作了。

下面是一个最小的工作示例:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8" />
<title>Test</title>
<script type="text/javascript">
    window.onload = function(e) {
        document.getElementById("btn").onclick = clickBtn;
        document.getElementById("touch").ontouchstart = touchDiv;
    }

    function clickBtn(e) {
        var cnt = document.getElementById("container");
        var tdv = document.getElementById("touch");
        cnt.removeChild(tdv);
        cnt.appendChild(tdv);
    }

    function touchDiv(e) {
        var sp = document.getElementById("sp");         
        sp.innerHTML += "*";
    }
</script>
</head>
<body>
<div id=container>
<div style="width: 200px; height: 200px; background-color: red;" id="touch">Touch this</div>
</div>
<button id="btn">Test</button>
<span id=sp></span>
</body>
</html>

(为了方便起见,我还把它放在这里:http://dl.dropbox.com/u/8100013/test.html。)如果您触摸iPad上的红色方块,就会在按钮旁边的文本中添加一个"*“,以显示已经触发的touchstart事件。按下按钮可以从其父容器中移除红色方格,并再次添加它。在那之后,至少在我的iPad上,"*“字符不再被添加,所以它似乎不会触发。

有人知道这是怎么回事吗?我承认我对Javascript/HTML5 5很陌生,所以我可能遗漏了一些显而易见的东西,但在带有鼠标的PC上,鼠标向下的事件在删除和重新插入对象之后工作得很好。

EN

回答 1

Stack Overflow用户

发布于 2012-06-03 21:24:06

删除dom元素的父元素也会删除附加的事件,所有这些事件。但我认为,如果不是.removeChild,你是document.body.appendChild,它就不会发生了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10873850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档