Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用jquery追加之前对html进行更改_Javascript_Jquery - Fatal编程技术网

Javascript 在使用jquery追加之前对html进行更改

Javascript 在使用jquery追加之前对html进行更改,javascript,jquery,Javascript,Jquery,我正在使用ajax调用一个页面,并使用jquery对其进行更改 但是,在将其追加到div之后,这些更改不会反映出来 虽然对html进行了更改,但html变量保持不变 如何更改html变量,然后附加到DOM 如果我将代码直接用于DOM,则DOM中以前的元素将发生更改 代码 $.ajax({ type: "POST", url: 'more_images.jsp', data: ({uid:uid, aid:aid, imgid:imgid}) , cache: false, success: fu

我正在使用ajax调用一个页面,并使用jquery对其进行更改

但是,在将其追加到div之后,这些更改不会反映出来

虽然对html进行了更改,但html变量保持不变

如何更改html变量,然后附加到DOM

如果我将代码直接用于DOM,则DOM中以前的元素将发生更改

代码

$.ajax({
type: "POST",
url: 'more_images.jsp',
data: ({uid:uid, aid:aid, imgid:imgid}) ,
cache: false,
success: function(html)
{

    html = $.trim(html);
    $(html).filter('.corner-all').corner('5px');

    $(html).filter('ol.c_album > li .img_c').corner('3px');
    $(html).filter("ol.c_album > li ").find('a').attr('target', '_blank');
    $('#images_list').append(html);

}
});
谢谢


Pradyut

问题在于DOM元素是从字符串创建的,然后由其他函数修改。对字符串所做的更改是而不是

创建jQuery选择,缓存它,修改它,然后附加它:

$images = $(html);
$images.filter('.corner-all').corner('5px');

$images.filter('ol.c_album > li .img_c').corner('3px');
$images.filter("ol.c_album > li ").find('a').attr('target', '_blank');
$('#images_list').append($images);

看起来您需要在附加变量html之前重新分配它

...
html = $(html).filter('.corner-all').corner('5px');

html = $(html).filter('ol.c_album > li .img_c').corner('3px');
html = $(html).filter("ol.c_album > li ").find('a').attr('target', '_blank');
...

你的代码有问题。 据我所知,ajax请求返回附加到#images_list元素的html代码 成功函数的html参数包含该html代码。 $(html).filter('.corner all').corner('5px'); 没有道理。您正在尝试访问html选择器。

我会这样做:

$('#images_list').append($(html)
  .filter('.corner-all').corner('5px').end()
  .filter('ol.c_album > li .img_c').corner('3px').end()
  .filter("ol.c_album > li ").find('a').attr('target', '_blank').end()
);

html
在本例中是一个变量,
$的响应。ajax
callAn extra
.end()
调用在第三次
filter
调用之后需要。此代码不适用于“html”中的复杂dom,代码将只附加更改的元素,而不是所有元素…@Pradyut-啊,对不起;您需要在其中添加另一个“.end()”—我将更新答案。@Pradyut—是的,代码将适用于“复杂DOM”,并且(根据我刚才所做的更改)它将附加所有元素。顺便说一句,我希望附加到ol,但现代浏览器会自动关闭ol。。。如何删除最后一个元素,然后将其附加到DOM中???@Pradyut您的意思是要将
$images
的子元素附加到
$(“#images_list”)