[英]Passing string argument to jQuery and it thinks its function
我有以下功能
function showPossibleLocationToAdd() {
var ulist = $("<ul data-rok='listview' id='addLocationList'></ul>").appendTo("#addLocation");
for (var i = 0; i < 10; i++) {
console.log("calling" + i*5 + "," + i*3 + ",Location " + i);
var name = "Location " ;
$("<li><a href='#settingsPage' data-role='button' onclick='addNewLoc("+ i*5 + "," + i*3 + "," + name + ")'>Location " + i + "</a></li>").appendTo("#addLocationList");
}
}
它应动态创建带有on事件的列表,该事件应调用此函数:
function addNewLoc(long, lat, name) {
console.log(long);
console.log(lat);
console.log(name);
}
但是点击链接后的输出我得到了这个提示,例如:
25 15函数Location(){[本地代码]}
所以我的问题是为什么它认为变量名是函数而不是String?
因为您正在将Location
传递给函数。 在某些浏览器中,它是本机构造函数。 它不是代码中的字符串。 您应该避免使用onclick
属性。 您可以将值存储在data-*
属性中,使用jQuery委派动态生成的元素的事件,然后使用.data()
方法在事件处理程序中读取data-*
属性,例如: $(this).data('location')
。
addNewLoc是否绑定在click事件上? 这是正常的目的。
绑定事件时,第一个参数始终是事件。
尝试这个 :
function addNewLoc(e, long, lat, name) {
console.log(long);
console.log(lat);
console.log(name);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.