2012-05-13 16 views
0

jsベースのepubリーダーを週末のプロジェクトとして作成しています。画像URLから各本のページの画像のsrc属性を変更しようとしていますepub zipからロードされたデータURIに変換します。ここに私の関数です:jQuery attrでDOM文字列が変更されていない

//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; 
} 

返されたpageContentsのreplaceImages関数は、まだ古いsrc属性を持っています。必要に応じて詳細を提供することができますが、どんな助力も非常に高く評価されます。システムを再起動し、イリヤGへ

正解のおかげ:

function replaceImages(pageContents) { 
    newContent = $(pageContent); 
    ... manip ... 
    return newContent; 
} 
+0

'pageContents'はキャッシュされたアイテムです。返す前にリフレッシュする必要があります。 – Mottie

+0

奇妙なキャッシングがあるようですが、返信する前にpageContentをどのように更新すればよいでしょうか? –

+0

ああ、私は新しいコメントを見る...私は答えを追加します。 – Mottie

答えて

1

あなたがイメージのロード完了した後、画像srcを変更しようとする必要があります。

これはloadImageの機能で起こっていると思います。

あなたの更新の質問によると:

あなたはどんなclone()を必要としない、私は思います。 pageContentstempContents変数に格納し、その変数を使用してください。

+0

見ていただきありがとうございます。DOM文字列がページに追加される前に変更する方法はありません。それがうまくいった後まで待たなければならないが、それは404トンのトンを生成し、必要ならばそれを避けたい。再度、感謝します。 –

2

クローンを作成する必要はありません。単純に文字列を、あなたはそれの修正版を返却する必要がありますされpageContentsので、その後return pageContents.html();

+0

皆さん、お手数ですが、お世話になりました! –

1

、その後、pageContents上の画像の交換を行い、pageContents = $(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(); 
} 
関連する問題