```
function Li(options) {
function TabLiContent(options) {
this._init(options);
}
TabLiContent.prototype = {
// 数据初始化
_init : function(options) {
this.tabIndex = options.tabIndex || 0;
this.liNum = options.liNum || 0;
this.container = options.container || null;
this.index = options.index || 0;
return this;
},
// 数据校验
_checkData : function() {
if (this.container == null) {
throw new Error('have not container');
}
return this;
},
// 随机填充container
_makeLi : function() {
this._checkData();
var str = '';
str += '<li data-index='+this.index+' data-tab='+this.tabIndex+' class="li_con">'
str += '<span data-index='+this.index+' data-tab='+this.tabIndex+' class="li_word">这是第' + this.tabIndex + 'tab栏的第' + this.liNum + '个li</span>'
str += '<span class="list_ok" data-index='+this.index+' data-tab='+this.tabIndex+'>删除</span>'
str += '</li>';
return str;
},
// 获取当前对象的数据
_getObjSData:function(dom){
return dom.dataset;
},
// 点击跳转详情
_openDetail: function(data) {
var that = this;
var data = that._getObjSData(data);
console.log(data);
alert('即将打开' +data.index+'商品详情的页面 '+data.tab+'');
},
// 删除
_delListOne:function(data) {
var that = this;
var data = that._getObjSData(data);
console.log(data);
alert('即将删除此商品' +data.index+'')
},
// 事件绑定[所有的点击事件通过事件委托方式绑定]
_bindEvent : function(options) {
var con = this.container;
var that = this;
con.onclick = function(ev) {
var ev = ev || window.event;
var target = ev.target || ev.srcElement;
switch(target.className){
case 'li_con':
// 进入详情
that._openDetail(target);
break;
case 'list_ok':
// 删除
that._delListOne(target);
break;
case 'li_word':
// 进入详情
that._openDetail(target);
break;
}
}
},
main : function() {
try {
this._checkData();
this.container.innerHTML += this._makeLi();
} catch(e) {
console.log(e);
}
}
}
return function(options) {
var tabLiContent = new TabLiContent(options);
tabLiContent.main();
tabLiContent._bindEvent(options);
return tabLiContent;
}(options);
}
```
```
var dom = document.querySelector('#listOne');
var dom1 = document.querySelector('#listTwo');
var dom2 = document.querySelector('#listThree')
var json = [{
tabIndex : 0,
liNum : 1,
container : dom,
index : 0
}, {
tabIndex : 0,
liNum : 2,
container : dom,
index : 1
}, {
tabIndex : 0,
liNum : 3,
container : dom,
index : 2
}, {
tabIndex : 0,
liNum : 4,
container : dom,
index : 3
}];
var json1 = [{
tabIndex : 1,
liNum : 1,
container : dom1,
index : 0
},
{
tabIndex : 1,
liNum : 2,
container : dom1,
index : 1
},
{
tabIndex : 1,
liNum : 3,
container : dom1,
index : 2
}];
var json2 = [{
tabIndex : 2,
liNum : 1,
container : dom2,
index : 0
},
{
tabIndex : 2,
liNum : 2,
container : dom2,
index : 1
},
{
tabIndex : 2,
liNum : 3,
container : dom2,
index : 2
}];
json.forEach(function(item) {
Li(item);
})
json1.forEach(function(item) {
Li(item);
})
json2.forEach(function(item){
Li(item);
})
```
- css用法技巧
- 阴影被后面div遮挡
- 绘制一个三角形
- 图像的灰白处理
- 一切居中
- 禁用鼠标事件
- 模糊文本
- 字体省略号
- 垂直居中
- box投影
- css动画
- javaScript常见工具封装
- 地址栏参数获取
- 日期格式化
- Ajax
- scroll
- 缓动函数
- 事件绑定
- 阻止冒泡和默认行为
- 伪数组正常化
- 日期生成
- 拷贝
- javaScript基本知识
- javaScript基本知识
- javascript常见代码块
- vue常见问题
- 获取参数
- vue常见问题/vue混入
- v-html指令问题集锦
- 正则获取html中所有的中文字符
- 时间格式化
- 监听路由的变化
- vue移动端滑动事件
- vue移动端图片点击放大
- 打包后背景图片404的问题
- webpack打包后部分样式失效
- IE的兼容问题
- post请求后台无法接受参数
- 验证码
- vue开启Gzip报错
- v-html修改样式
- app.css文件过大
- vue中中使用iframe
- babel对es6编译不彻底 出现ie不兼容的问题
- vue单页应用优化
- 吸顶问题
- 跨域session无法共享
- 登陆返回上一页
- axois中使用delete数据传递问题
- 监听数组对象数组中的属性
- webpack
- webpack基本使用
- webpack打包删除注释
- js插件
- 轮播图
- 面向对象模板
- 左滑右滑
- 存储
- appcan
- appcan
- js深入研究
- 数组的参数传递问题
- 采用jquery的方法载入公共页面后出现闪烁的问题
- html拼接无法绑定事件
- 吸顶问题
- async配合promise使用
- flutter
- 模拟器加载报错
- 底部导航实现
- 模拟器出现错误
- flutter在idea下的快捷键
- flutter学习笔记
- 设计模式
- 观察者模式
- nest
- nest基本说明
- nest错误处理
- vue高级
- 动态注入路由
- nest实战
- 一项目准备
- window
- 端口进程被占
- mis包
- reactNative
- react-native-router-flux
- esLint
- eslint
- Cesium