Jquery .html替换器只是清空了我的选择器,出了什么问题?

时间:2010-06-14 20:35:36

标签: javascript jquery html

$("#autoNames").html(function (index, html) {
                                    var begin = "<script language='javascript' type='text/javascript'> var names = [";
                                    var end = String('];' + '<' + '/' + 'script' + '>');
                                    var result = begin.concat(jsonService, end);
                                    $("#autoNames").html(result);
                                    return false;
                                });

我无法弄明白为什么这不起作用。我之前已经使用了html函数,但由于某些原因,这只是让我的autoNames标记为空...我在结果变量上调用了一个alert()并且该字符串中存在的东西...任何线索?

由于

4 个答案:

答案 0 :(得分:2)

当您将函数传递给.html()时,该函数需要返回您想要设置的内容,如下所示:

$("#autoNames").html(function (index, html) {
   var begin = "<script type='text/javascript'> var names = [";
   var end = String('];' + '<' + '/' + 'script' + '>');
   return begin.concat(jsonService, end);
});

目前,您正在设置.html()但正在返回false,并且外部.html()调用将其设置为空。或者,只是这样做,因为你正在处理一个元素:

var begin = "<script type='text/javascript'> var names = [";
var end = String('];' + '<' + '/' + 'script' + '>');
$("#autoNames").html(begin.concat(jsonService, end));

答案 1 :(得分:1)

很想知道你在这里想做什么......无论如何:

$("#autoNames").html('<script>var names = [' + jsonService + '];</script>');

答案 2 :(得分:0)

将函数传递给html方法时,应该返回元素应该设置的HTML。我没有看到任何理由为什么你需要首先使用那个重载(它是根据集合中的每个元素动态生成内容);你可能只想使用该函数中的代码:

var begin = "<script language='javascript' type='text/javascript'> var names = [";
var end = String('];' + '<' + '/' + 'script' + '>');
var result = begin.concat(jsonService, end);
$("#autoNames").html(result);

答案 3 :(得分:0)

我遗漏了什么,或者你只是把JS数组放在那个div中? 看起来你需要为每个或类似的做一些来获取数组值并将它们放在html中。

也许只是因为我错过了一些细节,但看起来很奇怪。

那个jsonService真的是个json吗?如果是,那么你需要:

var jsonObj = eval("("+jsonService+")");

然后像这样访问它的值:

alert(jsonObj.valueName);