2010-12-02 2 views
3

私は以下のコードを持っています、そして、私がする必要があるのは、hrefからajax経由でdivにイメージをロードすることです。私はload()がこのようなイメージをロードできないと信じていますか?イメージを取得し、ajax経由でdivにロードすることができます

<ul id="list"> 
    <li class="list-item-1"><a href="images/image1.jpg">Image 1</a></li> 
    <li class="list-item-2"><a href="images/image2.jpg">Image 2</a></li> 
    <li class="list-item-3"><a href="images/image3.jpg">Image 3</a></li> 
    <li class="list-item-4"><a href="images/image4.jpg">Image 4</a></li> 
    </ul> 
<div id="image-holder"></div> 

多くのおかげで、 C

+1

実際にajax経由で画像を読み込むことはありません。各画像は、src属性を介して画像を要求します。 JavaScriptを使用してイメージsrcを変更すると、新しいイメージがロードされます。 DutrowLLCは正しい軌道に乗っています。 – Gregg

答えて

11

現在追加されているイメージを削除します。ここではマークアップを追加するのではなく、クリックイベントとイメージを使用します。

$('#list li a').click(function() { 
    var url = $(this).attr('href'), 
    image = new Image(); 
    image.src = url; 
    image.onload = function() { 
     $('#image-holder').empty().append(image); 
    }; 
    image.onerror = function() { 
     $('#image-holder').empty().html('That image is not available.'); 
    } 

    $('#image-holder').empty().html('Loading...'); 

    return false; 
}); 
+0

ありがとうeveyone。私がajax/load()に言及したのは、画像がロードされた時、エラーがあった時などを検出するからです。私がしたいのは、画像がロードされるまでプリローダーを表示することです。次に、プリローダーを削除し、元の画像をフェードアウトして新しい画像を表示します。可能? –

+0

元の投稿を読み込み中およびエラーメッセージとともに編集しました。 Image DOMオブジェクトにはエラーイベントとロードイベントがあります:http://www.w3schools.com/jsref/dom_obj_image.asp – mqsoh

+0

非常に良い! Ajaxの負荷を強制することよりも利点があります。同じURLに再度トリガーすると、リロードされません(私のユースケースは、クエリーパラメーターに基づいてイメージを描画するWebサービスからのプレビューイメージをロードしています。 ) – Adam

3

が、これは、私もまた、初心者のビットんだ、私がしようと最初の事のようになります。あなたはまたに持って

var image = $('<img></img>'); 
image.attr('src', 'images/image1.jpg'); 
$('#image-holder').append(image); 
0

あなたは動的に何をする必要があなたの親要素その後、

var im = document.createElement('img'); 
im.src = 'image_path1'; 
img_div.appendChild(im); 

は、いくつかのイベントであれば上にある

がimg_divを言うのimg src属性に変更されたDOM を使用する画像を変更したい場合この画像を変更したい

im.src = 'image_path2' 
1

いいえ。メッシーしかしそれは完全に動作します。背景画像として画像を追加するような微妙な調整がいくつかあります。ここにあり、私はそれが他の誰かを助けることを願っています!みなさん、ありがとう。

<script type="text/javascript"> 
$(function(){ 
    var list = $("#list"); 
    var li = list.children(); 
    var lengthMinusOne = li.length - 1; 
    var index = 0; 
    var num = $("#list li").length; 
    var prevLi = $(li[0]).css("background-color", "gray"); 

    $("#next").click(function(){ 
     index++; 
     if (index > lengthMinusOne) index = 0; 
     prevLi.css("background-color","white"); 
     prevLi = $(li[index]).css("background-color", "gray"); 

     //Trigger a href click 
     $(prevLi).children('a').trigger('click'); 

     //Display class in console 
     var myClass = $(prevLi).attr("class"); 
     console.log(myClass); 
    }); 
    $("#prev").click(function(){ 
     index--; 
     if (index < 0) index = lengthMinusOne; 
     prevLi.css("background-color","white"); 
     prevLi = $(li[index]).css("background-color", "gray"); 

     //Trigger a href click 
     $(prevLi).children('a').trigger('click'); 

     //Display class in consol 
     var myClass = $(prevLi).attr("class"); 
     console.log(myClass); 
    }); 


    //Loader 
    loader = $('#loader'); 
    loader.hide(); 
    var firstImg = $('<img />'); 
    $(firstImg).attr('src',$('#list li a').attr('href')); 
    $('#image-holder').append(firstImg); 

    //get image and load into div 
    $('#list li a').click(function(event) {       
     //Add class to image within holder 
     oldImg = $('#image-holder img').addClass('old'); 
     newImg = $('<img />'); 

     $(newImg).attr('src',$(this).attr('href')); 
     //remove old image and show loader 
     $(oldImg).fadeOut().remove(); 
     loader.show(); 

     $(newImg).bind({ 
      load: function() {   
       //console.log("Image loaded"); 
       //Hide loader before fading in image 
       loader.hide(); 
       $('#image-holder').append(newImg).hide().fadeIn(1300); 
      }, 
      error: function() { 
       //console.log("Error thrown, image didn't load, probably a 404."); 
      } 
     }); 

     event.preventDefault(); 
    }); 


}) 
</script> 
+0

あなたがすばらしいと思われるきちんとしたものを考えれば、もっと速いページロードを得ることができます。 –

関連する問題