1

我在遍历数组时尝试显示 html 元素(例如 img、ul 等)时遇到问题。

$.each(data[0], function(i, dataa) {
    if(i == 'images') {
        $.each(data[0].images, function(x, datab) {
            $('.g').append('<tr><td>'+datab.imgid+'</td></tr>');
        });
    } else if(i == 'desc') {
        $('.g').append('<tr><td><label>' + i + ' : </label></td>' + '<td>' + dataa + '</td></tr>');
    } else {
        $('.g').append('<tr><td><label>' + i + ' : </label></td>' + '<td><input type="text" name="' + i + '" id="' + i + '" value="' + dataa + '" ></td></tr>');
    }
});

以下是将图像添加到数组中:

foreach($_FILES['uploadsell1'][tmp_name] as $key => $value) {
    if($_FILES['uploadsell1'][tmp_name][$key] != null) {
        $filename = $_FILES['uploadsell1'][name][$key];
        $tempname = $_FILES['uploadsell1'][tmp_name][$key];
        copy($tempname, 'images/ads/tempads/'.$filename);

        $df[]["imgid"] = "<img src='/images/ads/tempads/".$filename."' height='80' width='100' />";
    }
}


$row['images'] = $df;                       
echo '['.json_encode($row).']';

在字段中发布的数据工作正常。它只是在包含 html 元素时才搞砸。有没有其他办法解决这个问题?

4

1 回答 1

0

我想你正在寻找的是attr()

尝试修改您的代码

$('.g').append('<tr><td>'+datab.imgid+'</td></tr>');

$('.g').append( $('<tr/>').append($('<td/>').append($("<img/>").attr("src", datab.imgid).attr("width",datab.width).attr("height",datab.height))));

在客户端。在服务器端,您需要执行类似的操作

$df = array ( array("src" => 'images.jpg', 'height' => '80', 'width' => '100') );

这意味着分解标签并详细说明您要在 HTML 中赋予标签的所有属性。请注意,如果您执行类似的操作,您可以轻松获得更通用的方式

$df = array ( array("src" => 'images.jpg', "attrs" => array('height' => '80', 'width' => '100')) );

然后在javascript中循环通过“attrs”。

您可能需要考虑类似声明 CSS 而不是标签属性的内容。然后 JavaScript 应该调用css(key,value)而不是attr(key,value)因为 CSS 更强大。

但想法是,如果您想构建以下 HTML

<img src="my_src.jpg" height="100" width="80"/>

那么你的 JavaScript 应该是这样的

$("<img/>").attr("src","my_src.jpg").attr("height","100").attr("width","80")

您可以在我的网站上查看我的运行示例。

如果我误解了您的问题,或者您发现我的回答有任何问题,请告诉我,以便我进行编辑。

于 2012-09-07T13:01:05.157 回答