Wordpress JQuery Conflict(主题和插件)

时间:2017-03-23 13:13:58

标签: javascript php jquery wordpress

我正在开发的wordpress网站正在使用QTip工具提示功能抛出错误。我使用的主题称为Eventum,工具提示包含在Event Espresso插件的日历中。使用默认的WP主题,日历工作正常,但使用Eventum主题时,它会出现以下错误:

Uncaught TypeError: (intermediate value)(intermediate value)(intermediate value).done is not a function
at QTip.PROTOTYPE._waitForContent (jquery.qtip.js?ver=2.2.0:633)
at QTip.PROTOTYPE._update (jquery.qtip.js?ver=2.2.0:618)
at QTip.PROTOTYPE._updateTitle (jquery.qtip.js?ver=2.2.0:642)
at QTip.PROTOTYPE.render (jquery.qtip.js?ver=2.2.0:187)
at QTip.<anonymous> (jquery.qtip.js?ver=2.2.0:1501)
at d (jquery.js?ver=1.12.4:2)

主题使用wp_enqueue_script来实现JQuery功能,除此之外我无法理解为什么它不起作用。从qtip.js文件中断的函数是:

PROTOTYPE._waitForContent = function(element) {
var cache = this.cache;

// Set flag
cache.waiting = TRUE;

// If imagesLoaded is included, ensure images have loaded and return promise
return ( $.fn.imagesLoaded ? element.imagesLoaded() : $.Deferred().resolve([]) )
    .done(function() { cache.waiting = FALSE; })
    .promise();  };

任何想法如何修复错误?

1 个答案:

答案 0 :(得分:-1)

我认为在Worpress你不能直接使用$。不确定为什么他们不添加,但尝试使用jQuery代替$

UPDATE

好的,我认为这个问题仍然存在于javascript中。看看你的主题中是否定义了$ .fn.imagesLoaded和$ .Deferred。它看起来像一个或其他没有定义,并没有返回promise()所以undefined.done()抛出一个错误。如果定义了imagesLoaded(),那么我不认为应该抛出那个错误。很可能它没有被定义,因此它属于$ .Deferred()函数,它也是未定义的。您可能需要获取imagesLoaded函数并包含该脚本。哪个最有可能解决您的问题

http://imagesloaded.desandro.com/

https://api.jquery.com/jquery.deferred/