js拼接字符串时,字符串的事件参数需要传对象或对象数组的处理方法
有时候在js拼接字符串时,需要传递对象或对象数组,这时候直接将事件拼接在html达不到想要的效果,如
$(document).ready(function(){
var dd=[];
for(var i=0;i<3;i++){
var obj ={};
obj.a='i'+i;
obj.b='j'+i;
dd.push(obj);
}
var html="<a href='javascript:void(0);' οnclick=\"fn_test("+dd+");\">aaaaa</a>";
$("#test").append(html);
});
function fn_test(b){
for(var i=0;i<b.length;i++){
alert(b[i].a);
}
}
dd参数为对象数组,直接这样做会对象参数会成为一个字符串传递过去,而达不到预料的效果,我们可以换种思路:先把生成的html字符串apend到页面上,然后再给节点绑定事件.
解决办法:
$(document).ready(function(){
var dd=[];
for(var i=0;i<3;i++){
var obj ={};
obj.a='i'+i;
obj.b='j'+i;
dd.push(obj);
}
var html=$("<a href='javascript:void(0);'>aaaaa</a>");
$("#test").append(html);
html.click(function(){
fn_test(dd);
});
});
function fn_test(b){
for(var i=0;i<b.length;i++){
alert(b[i].a);
}
}
或者
$(document).ready(function(){
var dd=[];
for(var i=0;i<3;i++){
var obj ={};
obj.a='i'+i;
obj.b='j'+i;
dd.push(obj);
}
var html="<a id="testNode" href='javascript:void(0);'>aaaaa</a>";
$("#test").append(html);
$("testNode").bind("click",function(){
fn_test(dd);
});
});
function fn_test(b){
for(var i=0;i<b.length;i++){
alert(b[i].a);
}
}
这样即达到想要的效果