2017-08-22 3 views
0

私はIsotope pluginをWordpressページのグリッドに使用しています。 IsotopeのimagesLoadedオプションを使用して、ページが読み込まれたときにページ上のイメージが重ならないようにしたいと考えています。誰かが私の既存のコードでどこでどのように使用しなければならないと私に説明することができますimagesLoadedIsotope Plugin:imagesLoadedオプションの使い方は?

jQuery(function ($) { 

    var $container = $('#isotope-list');   
    $container.isotope({       
     itemSelector : '.item', 
     layoutMode : 'masonry', 
     percentPosition: true 
    }); 


    //Add the class selected to the item that is clicked, and remove from the others 
    var $optionSets = $('#filters'), 
    $optionLinks = $optionSets.find('a'); 

    $optionLinks.click(function(){ 
    var $this = $(this); 
    // don't proceed if already selected 
    if ($this.hasClass('selected')) { 
     return false; 
    } 
    var $optionSet = $this.parents('#filters'); 
    $optionSets.find('.selected').removeClass('selected'); 
    $this.addClass('selected'); 

    //When an item is clicked, sort the items. 
    var selector = $(this).attr('data-filter'); 
    $container.isotope({ filter: selector }); 

    return false; 
    }); 

}); 

UPDATE:

私はimagesLoadedを追加しようとしたが、それは完全に動作を停止する同位体のプラグインが発生します。ここでimagesLoadedとのコードを追加します:

jQuery(function ($) { 

    var $container = $('#isotope-list').imagesLoaded(function() { 
     $container.isotope({ 
      itemSelector : '.item', 
      layoutMode : 'masonry', 
      percentPosition: true 
     }); 
    }); 

    //Add the class selected to the item that is clicked, and remove from the others 
    var $optionSets = $('#filters'), 
    $optionLinks = $optionSets.find('a'); 

    $optionLinks.click(function(){ 
    var $this = $(this); 
    // don't proceed if already selected 
    if ($this.hasClass('selected')) { 
     return false; 
    } 
    var $optionSet = $this.parents('#filters'); 
    $optionSets.find('.selected').removeClass('selected'); 
    $this.addClass('selected'); 

    //When an item is clicked, sort the items. 
    var selector = $(this).attr('data-filter'); 
    $container.isotope({ filter: selector }); 

    return false; 
    }); 

}); 

私はページのヘッダーにimagesLoadedスクリプトにリンクしていますが、Chromeでページを検査するとき、私は、次のエラーを取得しています:

Error

+0

ここまで追加してみましたか?アイソトープを初期化する前または後に呼び出すことができます。それであなたは問題を引き起こしましたか? – FluffyKitten

+0

[docs](https://isotope.metafizzy.co/layout.html#imagesloaded)を読んでいれば、その方法を知ることができます。編集可能なデモなども付属しています。 – Terry

+0

[IsotopeはimagesLoadedで動作しません]の複製がありますか?(https://stackoverflow.com/questions/23387010/isotope-not-working-with-imagesloaded) – Terry

答えて

1

あなたのイメージのすべてのコールバック関数でそれを実行してロードするまでは、例えば、同位体を初期化延期することができます。

var $container = $('#isotope-list').imagesLoaded(function() { 
    $container.isotope({ 
     itemSelector : '.item', 
     layoutMode : 'masonry', 
     percentPosition: true 
    }); 
}); 

Isotopeを初期化し、画像がロードされた後にレイアウトを開始することができます。

// initialise Isotope 
var $container = $('#isotope-list');   
$container.isotope({       
    itemSelector : '.item', 
    layoutMode : 'masonry', 
    percentPosition: true 
}); 

// layout Isotope again after all images have loaded 
$container.imagesLoaded().progress(function() { 
    $container.isotope('layout'); 
}); 

参考:あなたのコードの残りの部分を参照するにはリンクなしでhttps://isotope.metafizzy.co/faq.html

+0

お返事ありがとうございます。残念なことに、最初のソリューションを実装すると、Isotopeは完全に機能しなくなりますが、理由は分かりません。私は単純に.imagesLoadedを既存のコードに追加しました(あなたの答えに示唆したように) – JoSch

+0

そして、2番目の方法を試したとき何が起こったのですか?また、あなたが使用したいと言ったように、imageLoadedライブラリをインクルードしていると思いますか? – FluffyKitten

0

は、私はあなたのコンソールログのエラーに基づいて推測を作っています。コンソールは、imagesLoaded.jsファイルがスクリプトとして読み込まれていないか、正しく読み込まれていないことを示す "imagesLoadedは関数ではありません"ということを示しています。アイソトープの初期バージョンにはimagesLoadedが含まれていますが、現在のバージョンは(v3)ではないため、別々にロードする必要があります。 jQueryの後にimagesLoaded.jsとisotope.jsがロードされていることを確認してください。

関連する問題