Dom 字符串在使用 jQuery attr 操作后不会改变
Dom string doesn't change after manipulation with jQuery attr
我正在制作一个基于 js 的 epub 阅读器作为周末项目,我正在尝试将本书每个页面上图像的 src 属性从图像 url 更改为从 epub zip 加载的数据 URI。这是我的函数:
//page contents is just an html string of the book's page
pageContents = GlobalZipLoader.load('epub.zip://' + pageLocation);
pageContents = replaceImages(pageContents)
...
function replaceImages(pageContents){
$(pageContents).find('img').each(function(){
var domImage = $(this);
//this is something like ".../Images/img.jpg"
var imageLocation = domImage.attr('src');
//this returns the proper data-uri representation of the image
var dataUri = GlobalZipLoader.loadImage('epub.zip://' + imageLocation);
//this doesn't seem to "stick"
domImage.attr('src', dataUri);
});
return pageContents;
}
从 replaceImages 函数返回的 pageContents 仍然具有旧的 src 属性。如果需要,我可以提供更多细节,但任何帮助将不胜感激。
正确答案感谢系统重新启动和 Ilia G:
function replaceImages(pageContents) {
newContent = $(pageContent);
... manip ...
return newContent;
}
你不需要克隆它。只需设置 pageContents = $(pageContents);
,然后在 pageContents
上执行图像替换,然后return pageContents.html();
您应该
尝试在图像加载完成后更改图像src
;
我认为这正在loadImage
功能中发生。
根据您的更新问题:
我认为你不需要任何clone()
。只需将pageContents
存储在tempContents
变量中并使用该变量
由于 pageContents 只是一个字符串,因此您需要返回它的修改版本。试试这个:
function replaceImages(pageContents){
// save jQuery object
var $pageContents = $(pageContents);
$pageContents.find('img').each(function(){
var domImage = $(this);
//this is something like ".../Images/img.jpg"
var imageLocation = domImage.attr('src');
//this returns the proper data-uri representation of the image
var dataUri = GlobalZipLoader.loadImage('epub.zip://' + imageLocation);
//this doesn't seem to "stick"
domImage.attr('src', dataUri);
});
// return contents of the modified jQuery object
return $pageContents.html();
}
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- 改变“;onClick"这个jQuery的操作从清除输入文本改为将输入文本添加到下面的列表中
- 这是关于Jquery/JS的,如果我改变元素's HTML-我可以对它执行其他Jquery/JS操作吗
- Dom 字符串在使用 jQuery attr 操作后不会改变
- 我希望我的操作改变它所附加的DOM元素
- 在套接字中发送文件.在不改变用户窗口位置的情况下执行IO操作
- 在redux状态改变后处理不纯的DOM操作
- 如何在Angular中让两个控制器执行相同的操作,但改变站点的视觉效果
- 测试一个Node.js函数,该函数的返回值可以根据执行异步操作的时刻而改变
- 操作jQuery对象而不改变html元素