G_jia
G_jia
  • 发布:2015-09-17 11:06
  • 更新:2015-09-22 08:56
  • 阅读:4863

绑定点击事件,触发两次

分类:MUI

为什么我用创建元素的方式进行事件绑定,点击的时候触发两次弹框,用直接赋值正常

          var content = document.getElementById("content");  
          for(var i=0;i<2;i++)  
          {  
            var li = document.createElement("li");  
            li.innerHTML="<li>dianji"+i+"</li>";  
            content.appendChild(li);  
          }  
          //content.innerHTML="<li>dianji</li><li>dianji2</li>"  
          mui('#content').on('tap','li',function(){  
            mui.alert('aaa');  
          })
2015-09-17 11:06 5 条评论 负责人:无 分享
已邀请:
DCloud_UNI_CHB

DCloud_UNI_CHB

你的错误在于如下两行js代码:

var li = document.createElement("li");  
li.innerHTML="<li>dianji"+i+"</li>";

这样你的DOM会变成:

<li><li>dianji0</li></li>

innerHTML中不需要<li>

DCloud_UNI_CHB

DCloud_UNI_CHB

事件触发两次的常见原因:
1、重复引用了mui.min.js
2、引用了第三方框架,比如zepto.js、avalon.js等,这些第三方框架中也有tap事件,同时也支持on事件绑定,因此会重复触发。

如果你的问题不属于如上两种情况,请上传完整测试工程,我们帮忙验证。

  • G_jia (作者)

    怎么上传?我给你粘下我所有的代码,正确配置下js路径就行

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

    <title></title>

    <script src="js/mui.min.js"></script>

    <link href="css/mui.min.css" rel="stylesheet"/>

    <script type="text/javascript" charset="utf-8">

    mui.init();

    mui.plusReady(function(){

    var content = document.getElementById("content");

    for(var i=0;i<2;i++)

    {

    var li = document.createElement("li");

    li.innerHTML="<li>dianji"+i+"</li>";

    content.appendChild(li);

    }

    //content.innerHTML="<li>dianji</li><li>dianji2</li>"

    mui('#content').on('tap','li',function(){

    mui.alert('aaa');

    })

    })

    </script>

    </head>

    <body>

    <div class="mui-content">

    <ul id='content'>


        </ul>  
    </div>

    </body>

    </html>

    2015-09-18 13:18

flax

flax - 一个作家曾经说过:“一个失落的灵魂能很快杀死你,远比细菌快的多.”

楼上正解!

该问题目前已经被锁定, 无法添加新回复