0

我正在创建一个像这样的 jquery 对象:

 htmlCode = $("<div id='"+data.layoutDescriptions[i].id+"'></div");

当我这样做时,它似乎主要缺少一些元素:

if(data.type == "ListView"){

    htmlCode.append("<SELECT property='"+ data.property +"' size="+ data.listProps.length +" multiple>");
    i = 0;
    while(i < data.listProps.length){

        htmlCode.append("<OPTION value='"+ i+1 +"'>"+ data.listProps[i] +"</OPTION>");
        i++;
    }
    htmlCode.append("</SELECT>");

} 

其中 data 是一个 Json 对象。

当我将其作为字符串执行时,它可以工作。例如,而不是

htmlCode.append("<OPTION value='"+ i+1 +"'>"+ data.listProps[i] +"</OPTION>");

我会做

htmlCode = htmlCode + "<OPTION value='"+ i+1 +"'>"+ data.listProps[i] +"</OPTION>";

我想找出缺少的东西,所以我想查看我尝试过的对象:

alert(JQuery.htmlCode.stringify());

alert(htmlCode.html);

下界工作。

有任何想法吗??

谢谢。

4

4 回答 4

5

你的第一行代码

htmlCode = $("<div id='"+data.layoutDescriptions[i].id+"'></div");

将变量声明htmlCode为包含单个<div>元素(由传递给函数的 HTML 定义)的 jQuery 对象。

你打电话时

htmlCode.append("<SELECT property='"+ data.property +"' size="+ data.listProps.length +" multiple>");

您将一个<select>元素(同样,由传递给函数的 HTML 定义)附加到该<div>元素的末尾,效果很好。

然而,当你打电话

htmlCode.append("<OPTION value='"+ i+1 +"'>"+ data.listProps[i] +"</OPTION>");

还将an 附加<option><div>元素,而不是您想要的<select>元素。

看起来您正在尝试使用 jQuery 对象和.append()函数构建 HTML 字符串,但这不是 jQuery 所做的。jQuery 使用实际元素,它只是让您传递 HTML 来创建它们。

于 2012-08-13T14:04:03.610 回答
1

要获取 DOM 元素的字符串表示形式,您可以使用其他问题中发布的内容。

但是,使用其他答案(console.log 或 Firebug)中提供的方法似乎是更容易的选择,因为它们无需修改代码即可工作。

于 2012-08-13T14:01:28.683 回答
0

你应该使用 Firefox/Firebug 来查看你的对象,浏览它们,改变它们,...

于 2012-08-13T14:03:04.770 回答
0

尝试类似:

if(data.type == "ListView"){
   var options;
   htmlCode.append("<SELECT property='"+ data.property +"' size="+ data.listProps.length    +" multiple></SELECT>");
   i = 0;
   while(i < data.listProps.length){

       options+="<OPTION value='"+ i+1 +"'>"+ data.listProps[i] +"</OPTION>";
       i++;
   }
   $(htmlCode).find('select').html(options);

} 

这是一个演示Demo

于 2012-08-13T14:28:56.583 回答