繁体   English   中英

将字符串参数传递给jQuery,并认为其功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM