我在将对象传递给函数并附加到页面时遇到了问题。是否真的有必要使用原型?从这个link帮我理解了一下,但仍然没有成功。
在我的$.each
上,将通过服务器添加一些标记,并且标记将有一个链接转到页面以提供关于该地点的description
。 x
是我的对象,描述是我要追加它。
$.each(data, function (i, x) {
var alerts = '<button type="button" onclick="getInfo(' + x + ')">AAAA YEAHHH</button>';
}
function getInfo(x) {
...//go to a page and append it
$('#about-info').append(x.description);
}
答案 0 :(得分:2)
您可以添加这样的点击处理程序:
$.each(data, function (i, x) {
$('<button type="button">AAAA YEAHHH</button>').on('click', function () {
getInfo(x);
}).appendTo('body');
}
OR
既然您知道该属性是 x.description ,那么您只需要像这样的值
$.each(data, function (i, x) {
var alerts = '<button type="button" onclick="getInfo(\'' + x.description + '\');">AAAA YEAHHH</button>';
}
\'' + x.description + '\'
好吧
... \'
正在转义单引号,以便它可以作为文字值包含在您正在创建的javascript字符串中。 '<button ...
。+ x.description +
正在连接description属性的值 - 我们不会将x或x.description的引用传递给 getInfo ,而是调用 getInfo 当 x.description 包含分配给警告的字符串时,'\' ...
这里第一个单引号开始一个新字符串,然后该字符串的第一个字符包含一个单引号作为文字值(即转义单引号,如\'
)在javascript中,你可以使用双引号或单引号来创建字符串,以便替代你可以做到这一点
var alerts = "<button type=\"button\" onclick=\"getInfo('" + x.description + "');\">AAAA YEAHHH</button>";
但是再次因为我们使用双引号来创建我们的字符串,我们必须转义我们想要包含在字符串中的双引号,如\"
答案 1 :(得分:0)
您需要使用代码构建html按钮元素。
$.each(data, function(i, x) {
var localx = x,
btn = $('<button/>').attr('type','button').click(function(){
getInfo(localx);
}).text('AAAA YEAHHH');
// add btn to the page somewhere here
});
function getInfo(x) {
$('#about-info').append(x.description);
}