闭包引起的onclick不起作用
生活随笔
收集整理的這篇文章主要介紹了
闭包引起的onclick不起作用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問(wèn)題描述:在html頁(yè)面綁定οnclick="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>名稱/規(guī)格:</td><td id="openDetail" οnclick="openDetail('+data.data[i].id+');">'+data.data[i].specification+'</td></tr>' +
'<tr><td>地區(qū):</td><td>'+data.data[i].areaName+'</td></tr>' +
'<tr><td>來(lái)源:</td><td>'+data.data[i].source+'</td></tr>' +
'<tr><td>昨日價(jià)格:</td><td>'+data.data[i].price+'</td></tr>' +
'<tr>' +
'<td>當(dāng)日價(jià)格:</td>' +
'<td>' +
'<div class="ezsm-collection-table-btn" οnclick="unchangedBtn('+data.data[i].id+')">不變</div>' +
'<div class="ezsm-collection-table-btn" οnclick="Ezsm_Alert_UpPrice('+data.data[i].id+');">更新</div>' +
'</td>' +
'</tr>' +
'</table></div>';
$("#collection_content").append(collection_table);
}
},
error: function (status) {}
});
}
//此時(shí)定義的opendetail不起作用
function openDetail(trendId){
localStorage.removeItem('trendId');
localStorage.setItem('trendId',trendId);
window.location.href="detail.html";
}
})
解決辦法
將$(function(){})換成閉包
(function(window){
//打開(kāi)詳情
window.openDetail=function(trendId){
localStorage.removeItem('trendId');
localStorage.setItem('trendId',trendId);
window.location.href="detail.html";
};
})(window);
原因:$(function(){})只在自己的作用域起作用,onclick綁定的方法只在初始化頁(yè)面時(shí)加載之后就清空其作用域,除非將該方法放在$(function(){})外面,但這樣會(huì)出現(xiàn)代碼冗余.
此時(shí)將該方法放在window下面,這樣調(diào)用的時(shí)候就可以了
記錄: 不建議將onclick綁在頁(yè)面上,最優(yōu)的是使用h5 data-*自定義屬性(具體使用看js之 data-*自定義屬性)
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhaozhenzhen/p/8795736.html
總結(jié)
以上是生活随笔為你收集整理的闭包引起的onclick不起作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: shell脚本if中判断大于、小于、等于
- 下一篇: 文件批量顺序重命名