今天下午,我一直在根据我找到的一个代码笔制作一个小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
});
感谢大家的帮助,非常感谢。