码迷,mamicode.com
首页 > Web开发 > 详细

关于js开发的小问题

时间:2016-07-09 15:01:50      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

一、开发当中经常会动态拼接html,当然为了简便性好多人直接就是使用内联事件:

$(#td1).html( <a href="#" onclick="app.showPostEdit(+aData+)"></a>);
 $.Test = {
            GetData: function () {
                $.post("/Home/GetData", function (backdata) {
                    var strHtml = "";
                    $.each(backdata, function (itemIndex, item) {
                        strHtml += "<div class=\"row\">";
                        strHtml += "    <div class=\"col-md-4\">";
                        strHtml += "        " + item.Id;
                        strHtml += "    </div>";
                        strHtml += "    <div class=\"col-md-4\">";
                        strHtml += "        " + item.Url;
                        strHtml += "    </div>";
                        strHtml += "    <div class=\"col-md-4\">";
                        strHtml += "        <button class=\"btn btn-sm\" onclick=\"$.Test.AppendBtn(" + item + ")\">" + item.Name + "</button>";
                        strHtml += "    </div>";
                        strHtml += "</div>";
                    });
                    $("#content").append(strHtml);
                });
            },
            AppendBtn: function (str) {
                console.log(str);
                alert(str.Name);
            }
        };

浏览器会把它解析为:

<button class="btn btn-sm" onclick="$.Test.AppendBtn(eval([object Object]))">Name1</button>

毫无疑问,上面这种情况肯定是不对的;通常这种解决方案有两种:

1、使用全局变量,函数中传递对象索引,在具体的函数根据索引取出相应的对象

2、不使用内联事件,动态注册事件

 

当然还有一种方法,就是把对象的属性分别取出来进行传递;如果只有一两个还可以,否则.........你懂的!如果有更好的解决方案,请指教,多谢哦!

 

二、当业务比较复杂,一个页面中可能要写多个js文件,某个js文件可能使用common.js中的方法,而真正去写代码时会发现没有提示;

  只需要把common.js拖到你当前的js文件中即可;

     你的js文件会出现:/// <reference path="common.js" />

关于js开发的小问题

标签:

原文地址:http://www.cnblogs.com/tianboblog/p/5655765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!