1

我购买的一个html主题的基于jQuery的代码是指JQuery对象的简写,即$.

然而,出于兼容性原因,WordPress 使用Jquery对象作为-。JQuery

我想坚持使用 WordPress 的方式,并将主题的代码更改为与 WordPress 兼容。

有没有办法将该主题的 javascript 代码转换为与 JQuery 对象一起使用?为了更具体,我给你举个例子;

考虑以下 JavaScript 代码,它负责Equal Height Columns使用一些 JQuery 魔法

/* __________________ Equal Heights __________________*/
$.fn.eqHeights=function(a){var f={child:false};var a=$.extend(f,a);var d=$(this);if(d.length>0&&!d.data("eqHeights")){$(window).bind("resize.eqHeights",function(){d.eqHeights()});d.data("eqHeights",true)}if(a.child&&a.child.length>0){var c=$(a.child,this)}else{var c=$(this).children()}var g=0;var b=0;var e=[];c.height("auto").each(function(){var h=this.offsetTop;if(g>0&&g!=h){$(e).height(b);b=$(this).height();e=[]}b=Math.max(b,$(this).height());g=this.offsetTop;e.push(this)});$(e).height(b)};

还要考虑该部分附带的以下初始化。

/* ________  equal heights __________________*/

$(document).ready(function () {
   $('.equalHeights').eqHeights();
});

现在...我该怎么做才能使上述代码与 WordPress 兼容?

我知道我必须JQuery在上面某处的某个关键位置插入字符串,但不确定确切的位置..

这个法典页面(下面的链接)是一个很好的资源,但我仍然无法弄清楚它是如何完成的。

http://codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_Wrappers

http://bombdiggitydesign.com/crisp-2/Crisp-warm/hero-equal-height-columns.html的实际代码在这里http://bombdiggitydesign.com/crisp-2/Crisp-warm/assets/js/ custom.js(只需搜索 EqualHeights)。

我只是复制了上面的一小部分来说明我的观点,而不是让你处理她巨大的 custom.js。我认为我抓取的部分足以理解这是如何完成的。

4

2 回答 2

1

这个问题的答案在以下stackoverflow url中:

jQuery Uncaught TypeError:无法读取未定义的属性“fn”(匿名函数)

但是要把它带回家,这是我需要做的:

像这样将主要代码包装在 custom.js 中;

(function ( $ ) { 

    // all that $ based code goes here... 

}( jQuery ));

换句话说,

转到 custom.js 文件(位于http://bombdiggitydesign.com/crisp-2/Crisp-warm/assets/js/custom.js)并将其添加到顶部

(function ( $ ) {  

这到底部

}( jQuery ));

并保存了文件。不需要额外的工作。

这是一个只有 2 行代码的整体解决方案,您不仅要照顾我所指的 EqualHeights 部分,还要照顾整个 she-bang 的其余部分。它们现在都与 WordPress 兼容。

希望它可以帮助某人。- 我肯定会的。

于 2013-10-15T23:35:07.527 回答
0

就我而言,问题是与最新版本的 jQuery 不兼容。将此添加到主题的 functions.php 作为临时解决方法,直到插件修复:

function thethe_fix() {
    wp_deregister_script('jquery');
    wp_enqueue_script("jquery", 
        "//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js", array('json2'),
        '1.8.3');
}
add_action( 'wp_print_scripts', 'thethe_fix', 20 );

请注意,这会将您的网站修复到 jQuery 1.8.3 版本,从长远来看,这可能不是一件好事。

于 2014-04-08T01:10:25.700 回答