关于js开发的小问题
2024-08-30 10:09:43
一、开发当中经常会动态拼接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" />
最新文章
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(二)
- 认识IoC
- 安装VS2013,可是电脑C盘没空间了,今天早上整理了下
- python学习笔记整理——列表
- [转]通过PowerShell工具跨多台服务器执行SQL脚本
- java_常用数据类型转换基础篇
- 【jmeter】JMeter测试MongoDB
- 删除TreeView节点以及其子节点
- php接口数据加密、解密、验证签名代码实例
- 各大oj题目分类(转)
- 用Hashcat每秒计算1.4亿个密码,破解隔壁WIFI密码
- Match-----Correlation-----find_ncc_model_exposure
- Hashtable与HashMap的区别
- Derek解读Bytom源码-Api Server接口服务
- Centos Java环境(转)
- 基于 CADisplayLink 的 FPS 指示器详解
- 2018.07.03 POJ 2318 TOYS(二分+简单计算几何)
- STL源码剖析——hashtable
- 不一样的入门:看C# Hello World的17种写法
- vue.js学习之组件(上篇)
热门文章
- QBXT 二月五号整理
- PHP 几个常用的正则表达式
- 四、 java循环结构
- CSS 实践:实现下拉菜单的方法
- AC日记——线段树练习5 codevs 4927
- [原创][FPGA][IP-Core]altlvds_tx &; altlvds_rx
- 洛谷—— P2880 [USACO07JAN]平衡的阵容Balanced Lineup
- 洛谷——P1825 [USACO11OPEN]玉米田迷宫Corn Maze
- Springboot构建问题集
- codeforces A. In Search of an Easy Problem