$不是函数.(在';$(“.accordon”)';中'$';未定义)


$ is not a function. (In '$(".accordion")', '$' is undefined)

今天下午,我一直在根据我找到的一个代码笔制作一个小jQuery手风琴,除非我把它放在Wordpress中我需要的地方,否则它很好用。我知道它可能很明显,但我现在花了太多时间看它,我觉得我在兜圈子。

这是我的wordpress代码,使用ACF:中的一些自定义字段

<aside class="accordion">
<div>
<span class="col-2 showitem"><?php the_field('show_date'); ?></span>
<span class="col-4 showitem"><?php the_title(); ?></span>
<span class="col-4 showitem"><?php the_field('show_city'); ?></span>
<span class="col-2 showitem">?php the_field('ticket_status'); ?></span>
</div>
<?php the_field('show_information'); ?>
</aside>

我的脚本在页面上。hp:

<script type="text/javascript">
var headers = ["H2"];
$(".accordion").click(function(e) {
var target = e.target,
name = target.nodeName.toUpperCase();
if ($.inArray(name, headers) > -1) {
var subItem = $(target).next();
//slideUp all elements (except target) at current depth or greater
var depth = $(subItem).parents().length;
var allAtDepth = $(".accordion p, .accordion div").filter(function() {
if ($(this).parents().length >= depth && this !== subItem.get(0)) {
return true;
}
});
$(allAtDepth).slideUp("fast");
//slideToggle target content
subItem.slideToggle("fast", function() {});
}
});
</script>

我还应该提到,我正在网站上使用这个Ajax Load More扩展,当我从页面中删除任何与此相关的内容并保持简单时,它就可以工作了。所以我有99%的把握,这与两者的互动性有关。但jQuery不是我的包,所以我希望有比我聪明的人知道我哪里错了。

我也有p作为显示:无;因为否则它会一直出现。

谢谢你看我的问题!

JD:)

附言,原始密码笔在这里http://codepen.io/rbobrowski/pen/likvA/

更新:我试着把所有的$都改成jQuery,然后改成jQuery。我也尝试了@jai的两个建议,但都没有成功。我还尝试了@freedomn-m链接到的解决方案,以及在搜索结果中检查和测试多个链接的方法,但没有成功。

在wordpress中,$符号不可用,相反,您可以将其更改为jQuery或将代码放在IIFE中,您需要将事件绑定放在文档就绪块中:

(function($){ // get it with '$'
   $(function(){ // <---doc ready block
      // put all the code in here
   });
})(jQuery); // <---pass jQuery here

实际上,您需要将代码放入文档就绪块中,但使用jQuery作为包装,并在args:中使用$

jQuery(function($){ // use jQuery and pass `$` for a reference to jQuery.
   // code here.
});

您应该用jQuery 替换所有$

jQuery(function($){ 
     // do all code here
});

手风琴代码对我来说太复杂了,我最终把它剥离了,并用解决了jQuery问题

jQuery(document).ready(function($) {
my code in here
});

感谢大家的帮助,非常感谢。