Проблема с плагином easyzoom.js

454
06 февраля 2017, 18:02

Использую плагин easyzoom.js для изображений, но требуется он только для ПК, а для моб. устройст он работать не должен. Поэтому испльзую его с enquire.js.

  var $easyzoom = $('.easyzoom').easyZoom();
  enquire.register("screen and (max-width:1100px)", {
    match: function() {
      var api = $easyzoom.filter('.easyzoom--adjacent').data('easyZoom');
      api.teardown();
    },
    unmatch: function() {
      var api = $easyzoom.filter('.easyzoom--adjacent').data('easyZoom');
      api._init();
    },
  });

Проблема в том, что все вроде бы работает но в консоли постоянно ошибка.

jQuery.Deferred exception: Cannot read property 'teardown' of undefined TypeError: Cannot read property 'teardown' of undefined
    at Object.match (http://dm/design/kids/js/main.js:12:11)
    at e.on (http://dm/design/kids/js/enquire.js:7:992)
    at f.addHandler (http://dm/design/kids/js/enquire.js:7:1297)
    at http://dm/design/kids/js/enquire.js:7:1894
    at b (http://dm/design/kids/js/enquire.js:7:282)
    at g.register (http://dm/design/kids/js/enquire.js:7:1853)
    at HTMLDocument. (http://dm/design/kids/js/main.js:8:11)
    at j (http://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js:2:29948)
    at k (http://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js:2:30262) undefined

jquery-3.1.1.min.js:2 Uncaught TypeError: Cannot read property 'teardown' of undefined
    at Object.match (main.js:12)
    at e.on (enquire.js:7)
    at f.addHandler (enquire.js:7)
    at enquire.js:7
    at b (enquire.js:7)
    at g.register (enquire.js:7)
    at HTMLDocument. (main.js:8)
    at j (jquery-3.1.1.min.js:2)
    at k (jquery-3.1.1.min.js:2)

Как ее исправить?

Answer 1

Вы используете фильтр не на том. Вы пытаетесь фильтровать дом элементы, а я не уверен, что плагин их вам возвращает.
Просто вместо

$easyzoom.filter('.easyzoom--adjacent').data('easyZoom');

Ищите

$('.easyzoom--adjacent').data('easyZoom');
Answer 2
$('.easyzoom--adjacent').data('easyZoom');
READ ALSO
Некорректно срабатывает js (jquery) script

Некорректно срабатывает js (jquery) script

Есть скрипт, который при наведении на элемент меню должен менять класс у блока с подкатегориями

394
Вызов Java Script без клика

Вызов Java Script без клика

Есть код всплывающей подсказки notification, показ через onclick

430
Оптимизация кода фиксированного блока

Оптимизация кода фиксированного блока

Можно ли это как то упростить:

363