将字符串参数传递给jQuery,它认为它的功能

时间:2014-08-06 09:55:14

标签: javascript jquery

我有以下功能

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");
    }
}

应该动态创建一个列表,其中包含应该调用此函数的click事件:

function addNewLoc(long, lat, name) {
    console.log(long);
    console.log(lat);
    console.log(name);
}

但点击链接后的输出我得到了这个回复,例如:

25 15 function Location(){[native code]}

所以我的问题是为什么它认为变量名是一个函数而不是String?

2 个答案:

答案 0 :(得分:2)

因为您正在将Location传递给您的函数。在某些浏览器中哪个是本机构造函数。它不是代码中的字符串。您应该避免使用onclick属性。您可以将值存储在data-*属性中,使用jQuery为动态生成的元素委派事件,然后使用data-*方法读取事件处理程序中的.data()属性,如:{ {1}}。

答案 1 :(得分:0)

addNewLoc是否在点击事件上绑定?这是正常目的。

绑定事件时,第一个参数始终是事件。

试试这个:

function addNewLoc(e, long, lat, name) {
    console.log(long);
    console.log(lat);
    console.log(name);
}