问题描述:在html页面绑定onclick="cli()" 方法,定义在$(function( function cli(){} ))不起作用

$(function(){
function createTableData(param){
$.ajax({
url: "/api/ezs/dataAcquisition/list",
data:{"param":JSON.stringify(param)},
type: 'post',
dataType: 'json',
success: function (data) {
// console.log(data);
$("#collection_content").empty();
for(var i=0;i<data.data.length;i++){
var collection_table='<div class="ezsm-collection-table">' +
'<table cellspacing="0">' +
'<tr><td>名称/规格:</td><td id="openDetail" onclick="openDetail('+data.data[i].id+');">'+data.data[i].specification+'</td></tr>' +
'<tr><td>地区:</td><td>'+data.data[i].areaName+'</td></tr>' +
'<tr><td>来源:</td><td>'+data.data[i].source+'</td></tr>' +
'<tr><td>昨日价格:</td><td>'+data.data[i].price+'</td></tr>' +
'<tr>' +
'<td>当日价格:</td>' +
'<td>' +
'<div class="ezsm-collection-table-btn" onclick="unchangedBtn('+data.data[i].id+')">不变</div>' +
'<div class="ezsm-collection-table-btn" onclick="Ezsm_Alert_UpPrice('+data.data[i].id+');">更新</div>' +
'</td>' +
'</tr>' +
'</table></div>';
$("#collection_content").append(collection_table);
}
},
error: function (status) {}
});
}
//此时定义的opendetail不起作用
function openDetail(trendId){
localStorage.removeItem('trendId');
localStorage.setItem('trendId',trendId);
window.location.href="detail.html";
}
}) 解决办法
将$(function(){})换成闭包
(function(window){
//打开详情
window.openDetail=function(trendId){ localStorage.removeItem('trendId');
localStorage.setItem('trendId',trendId);
window.location.href="detail.html";
};
})(window); 原因:$(function(){})只在自己的作用域起作用,onclick绑定的方法只在初始化页面时加载之后就清空其作用域,除非将该方法放在$(function(){})外面,但这样会出现代码冗余.
此时将该方法放在window下面,这样调用的时候就可以了 记录: 不建议将onclick绑在页面上,最优的是使用h5 data-*自定义属性(具体使用看js之 data-*自定义属性)
 

闭包引起的onclick不起作用的更多相关文章

  1. 浅析匿名函数、lambda表达式、闭包(closure)区别与作用

    浅析匿名函数.lambda表达式.闭包(closure)区别与作用 所有的主流编程语言都对函数式编程有支持,比如c++11.python和java中有lambda表达式.lua和JavaScript中 ...

  2. js的闭包中关于执行环境和作用链的理解

    首先讲一讲执行环境: 执行环境按照字面上来理解就是指目前代码执行所在的环境. 当JavaScript代码执行的时候,会进入不同的执行上下文,这些执行上下文会构成了一个执行上下文栈(Execution ...

  3. javascript闭包和立即执行函数的作用

    一.闭包——closure 先看一个闭包的例子.我们想实现一个计数器,最简单的方法就是定义一个全局变量,计数的时候将其加1.但是全局变量有风险,哪里都有可能不小心改掉它.那局部变量呢, 它只在函数内部 ...

  4. 什么是闭包?在js中的作用是什么?

    闭包就是讲函数内部生成的变量保存到内存中,进行下次调用:也可以说函数外不可以调用函数内部的变量: 当函数内部返回一个函数时,闭包搭建了方法内部与方法外部的桥梁,使得外部也可以任意的获取到方法内部的资源 ...

  5. javascript闭包作用

    闭包的简单概念:闭包就是能够读取其他函数内部变量的函数. 函数内部的函数闭包的两个最大的作用读取函数内部的变量变量的值始终保持在内存中function A(){ var n=999; nAdd=fun ...

  6. 深入解析Javascript闭包

    首先给个例子: function PfnOuter(){ var num=999; function PfnInner(){ alert(num); } return PfnInner; } var ...

  7. JavaScript:闭包

    根据MDN上的解释『闭包是指函数有自由独立的变量.换句话说,定义在闭包中的函数可以“记忆”它创建时候的环境.』 闭包有两个主要的作用: 1.访问内部函数的局域变量: 2.将创建的变量永久保存在内存中, ...

  8. Python深入04 闭包

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 闭包(closure)是函数式编程的重要的语法结构.函数式编程是一种编程范式 (而 ...

  9. python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)

    1.函数对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函 ...

随机推荐

  1. 记录一则完整的SPA(10g->11g)测试过程

    生产端:Windows 2008 + Oracle 10.2.0.5 测试端:RHEL 6.5 + Oracle 11.2.0.4 需求:因为Oracle跨越大版本,优化器.新特性变动较多,需要进行S ...

  2. 图像控件 ImageControl

    图像控件 书:164 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns: ...

  3. 10.用js下载文件(需要后端链接)

          用js下载文件 PS:本文说的,并非如何用js创建流.创建文件.实现下载功能. 而是说的:你已知一个下载文件的后端接口,前端如何请求该接口,实现点击按钮.下载文件到本地.(可以是zip啦. ...

  4. react结合redux开发

    先加上我码云的地址:https://gitee.com/ldlx/react_and_rudex

  5. POJ 2155 Matrix(二维BIT)

    Matrix [题目链接]Matrix [题目类型]二维BIT &题解: bit只能单点更新,恰好,这题可以想一下就可以用单点更新解决了. 只不过最后我交上去居然T了,想了10多分钟,试了一下 ...

  6. SQL Server 创建索引(index)

    索引的简介: 索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书. 索引主要目的是提高了SQL Server系统的性能,加快数 ...

  7. 六 js函数和this

    js的所有代码都是由funtion组成,funtion即函数的类型. 一.函数有两种写法 -----1.定义式 function test() { //定义一个函数 console.log(" ...

  8. Mysql常规优化

    一.SQL语句优化 (1)使用limit对查询结果的记录进行限定(2)避免select *,将需要查找的字段列出来(3)使用连接(join)来代替子查询(4)拆分大的delete或insert语句 二 ...

  9. samba共享目录无法访问的一般解决方案,非用户登录和读写权限问题

    配smb,被第四点坑了很久,特此转载. 由于这5点都是比较普通的情况,不涉及用户登录和读写权限问题 1)关闭防火墙: #sevice iptables stop 2)修改 /etc/samba/smb ...

  10. Spring tokenizeToStringArray

    tokenizeToStringArray: StringUtils.tokenizeToStringArray(pattern, this.pathSeparator, this.trimToken ...