-4

我需要的是能够将字符串传递给 javascript 函数,该函数在 div 的 onclick 事件中指定,

$("#div").html("<div id='suggestion' onclick='storetag("+response[i]['tagname']+")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>");

在这里我不能将 response[i]['tagname'] 传递给 storetag() ,因为它是一个字符串并且需要 quetos 围绕它

4

3 回答 3

0

不要使用必须处理字符串中包含的代码的内联 JS,而是执行以下操作:

var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>');
div.find('b').html(response[i]['tag']).on('click', function() {
    storetag(response[i]['tagname']);
});
$("#div").html(div);

这样,您首先创建 DOM,然后正确附加事件处理程序,而不必将 JS 代码放入字符串中。

如果您在循环中运行该代码(i很可能):

  • 不要使用id="suggestion". ID 必须是唯一的!
  • 使用以下 JS 代码,以便i在处理程序执行时使用正确的值:

    var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>');
    div.find('b').html(response[i]['tag']);
    (function(tagname) {
        div.on('click', function() {
            storetag(tagname);
        });
    })(response[i]['tagname']);
    $("#div").html(div);
    
于 2013-10-27T10:04:38.813 回答
0

您需要将引号放在值周围的字符串中:

$("#div").html("<div id='suggestion' onclick='storetag(\""+response[i]['tagname']+"\")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>");
于 2013-10-27T10:08:35.973 回答
0

尝试这个

$("#div").html("<div id='suggestion' onclick='storetag(\""+response[i]['tagname']+"\")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>");

在这里,我在您的代码中添加了 \" 转义

于 2013-10-27T10:08:51.497 回答