在函数中的$ .each传递对象

时间:2014-03-25 21:26:28

标签: javascript jquery

我在将对象传递给函数并附加到页面时遇到了问题。是否真的有必要使用原型?从这个link帮我理解了一下,但仍然没有成功。

在我的$.each上,将通过服务器添加一些标记,并且标记将有一个链接转到页面以提供关于该地点的descriptionx是我的对象,描述是我要追加它。

$.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);
}

2 个答案:

答案 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);
}