无法导入同位素插件---“$(container).isotope is not a function”

Tsa*_*nes 6 javascript import jquery npm jquery-isotope

我让Metafizzy Isotope插件工作的运气为零。网络选项卡显示它没有通过。

我安装isotope-layout在我需要它main-file.js,但代码无法识别$(container).isotope

在此处输入图片说明

涂黑的部分是 的实际名称main-file.js

我也在使用 webpack 并且想知道它是否是问题的一部分,但我不能肯定地说。


索引.js:

// css imports here

import "jquery/dist/jquery.min.js";
import "bootstrap/dist/js/bootstrap.bundle.min.js";

import mainfile from "./SiteAssets/scripts/main-file.js";
Run Code Online (Sandbox Code Playgroud)

主文件.js:

import axios from "axios";
import "@babel/polyfill/dist/polyfill.js";

var isotope = require('isotope-layout'); // Seeing "'isotope' is declared but its value is never read

// var isotope = require('imports-loader?$=jquery!isotope-layout/dist/isotope.pkgd');

// import isotope from "isotope-layout";

let myClass,
    names,
    _token;

export default class {
    constructor() {
        myClass = this;
        myClass.setTokenVar();
        // a few irrelevant things here

        myClass.loadSpecFilter();

    }

     loadSpecFilter() {
        var $grid = $('.keyContactDiv').isotope({
            itemSelector: '.grid-item',
            // layoutMode: 'fitRows',
            getSortData: {
                name: '.spec-name'
            }
        })

        $('#filters').on( 'click', 'button', function() {
            var sortByValue = $(this).attr('data-sort-by');
            $grid.isotope({ sortBy: sortByValue });
        });

        $('.button-group').each( function( i, buttonGroup ) {
            var $buttonGroup = $( buttonGroup );
            $buttonGroup.on( 'click', 'button', function() {
                $buttonGroup.find('.is-checked').removeClass('is-checked');
                $( this ).addClass('is-checked');
            });
        });
     }

}
Run Code Online (Sandbox Code Playgroud)

我的-html.html:

<div class="container">
   <div class="filters">
        <div class="btn-group button-group">
            <button type="button" class="btn btn-info filter-item" data-filter="*">Show All</button>
            <button type="button" class="btn btn-info filter-item" data-sort-by="spec-name">A-Z</button>
            <!-- some other buttons here -->
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

最后,我使用 JS 和 jQuery 创建了我想要过滤的 div 元素。这是一个屏幕截图:

关联

Ike*_*alu 3

尝试这个:

npm install jquery
npm install jquery-bridget

import $ from 'jquery';
import jQueryBridget from 'jquery-bridget';
import Isotope from 'isotope-layout';

// make Isotope a jQuery plugin
jQueryBridget( 'isotope', Isotope, $ );
// now you can use $().isotope()
$('.grid').isotope({
  // options...
});
Run Code Online (Sandbox Code Playgroud)

或者

import $ from "jquery";
import Isotope from "isotope-layout";

var grid = document.querySelector('.grid');
var iso = new Isotope( grid, {
          itemSelector: ".all",
          percentPosition: true,
          masonry: {
            columnWidth: ".all"
          }
});
$('.filters ul li').click(function() { // To filter your isotope.
    var data = $(this).attr('data-filter');
    iso.arrange({
       filter: data // All grid items
    });
});
Run Code Online (Sandbox Code Playgroud)