按钮来切换特定类的所有div(纯javascript,还是在jquery之后加载)?
我正在尝试在wordpress页面中插入一个切换按钮,该按钮将更改类“foo”的所有div的状态 有没有一种纯javascript的方法可以做到这一点,或者有什么方法可以保证js在jquery.js加载后加载?我真的不想试图弄清楚wordpress是如何以正确的顺序加载javascript和排队文件的,这应该是这一页上只需要的3行javascript 我的HTML/javascript知识很少,因此请提供所需的完整代码 更多详情: 在我的主题中有jquery,但是如果我尝试使用$(“.CLASSNAME”).toggle()语法,我会得到 “未捕获类型错误:未定义不是函数” 我认为这与我的“页面”javascript在jquery加载之前被加载有关 我尝试了很多东西,比如 CSS HTML 这导致前面提到的“未捕获类型错误:未定义不是函数” 这看起来很有希望,但我不太确定如何调整它以切换/链接到按钮: 关于血淋淋的细节, 这是WordPress4.0.1,第214个主题,在用W4帖子列表创建的页面上 我已经做了三个小时了:/Sigh。这应该适合你(我对它做了一些修改:): Javascript:按钮来切换特定类的所有div(纯javascript,还是在jquery之后加载)?,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我正在尝试在wordpress页面中插入一个切换按钮,该按钮将更改类“foo”的所有div的状态 有没有一种纯javascript的方法可以做到这一点,或者有什么方法可以保证js在jquery.js加载后加载?我真的不想试图弄清楚wordpress是如何以正确的顺序加载javascript和排队文件的,这应该是这一页上只需要的3行javascript 我的HTML/javascript知识很少,因此请提供所需的完整代码 更多详情: 在我的主题中有jquery,但是如果我尝试使用$(“.CLASS
function toggleDiv() {
var divs = document.getElementsByTagName('div');
var toggle = function() {
for (var i = 0, l = divs.length; i < l; i++) {
if (divs[i].getAttribute('class') == 'excerpt')
if (divs[i].style.display == 'none') divs[i].style.display = '';
else divs[i].style.display = 'none';
}
}
}
如果div属于摘录类
,则会切换显示
样式:
if (divs[i].style.display == 'none') divs[i].style.display = '';
else divs[i].style.display = 'none';
可能是由于WordPress在“无冲突”模式下加载 jQuery无冲突包装器 注意:WordPress中包含的jQuery库以“无冲突”模式加载。这是为了防止与WordPress可以加载的其他javascript库的兼容性问题 在“NoConfict”模式下,$快捷方式不可用,并且使用更长的jQuery。例如:
$(document).ready(function(){
$(#somefunction) ...
});
变成:
jQuery(document).ready(function(){
jQuery(#somefunction) ...
});
解决方案
使用jQuery
而不是$
function toggleDiv(){
jQuery('.excerpt').toggle();
}
首先包括jQuery引用,然后在IIFE(立即调用函数表达式)中包括jQuery代码,如下所示:
<script src='jquery/location'></script>
<script src='myscript/location'></script>
(function($){
$('.excerpt').toggle();
})(jQuery)
这两个脚本标记都应该是关闭标记之前的最后一个标记。通过这种方式加载内容,用户无需等待脚本加载后才能看到内容。如果您需要在加载时隐藏元素(即,您尝试了它,并且当页面加载时元素可见,然后隐藏),那么您应该应用CSS样式,并使用jQuery的toggleClass()
方法隐藏/显示或应用display:none直接对元素进行编码>并在要显示项目时使用toggle()
.hidden{
display:none;
}
另一个问题是您的输入类型是submit,它会触发POST(或GET)。这看起来不像您想要做的,所以您应该使用带有type=button
的按钮标签
在jQuery中绑定单击事件:
$('#toggle').on('click', function(){
$('.excerpt').toggleClass('hidden');
});
这里有一把小提琴:我还没有仔细阅读回复,谢谢大家。在这神秘的一天,我为每个人投了15分。对不起,我的问题没有完全编辑好,我当时已经准备好睡觉了
我最终根据这个JSFIDLE找到了答案:
HTML
显示/隐藏摘录
[…东西…]
[摘录wordlimit=20]
JS
var divs=document.getElementsByTagName('div');
var toggle=function(){
对于(变量i=0,l=divs.length;i
点击前/后按钮以澄清所需行为的图片
您的页面上似乎没有正确实现jquery。您的head部分是否包含该文件?请尝试使用jQuery而不是$。jQuery(document).ready(…..而不是$(document).ready.extract{display:none}
这是有效的CSS语法。然后要使用jQuery,您需要使用jQuery
或明确地传递$
。关于这一点,有很多短文。例如:函数toggleDiv(){jQuery('.extract').toggleDiv();})
最后一件事,submit
input通常会提交一个表单,导致页面重定向或刷新。你的问题很不清楚。仅供参考,jquery的实现是正确的,同样由于这里的wordpress/插件特定的设置,我的js文件在jquery之前加载,所以我不能使用jquery函数——我试图“等到jquery加载之后”,但我从google得到的任何东西都不起作用。我确信提交来自于互联网上的其他答案,我最终实现了一个按钮。是的,我试图记住我累了的东西,但却犯了一些愚蠢的错误。很抱歉,我的示例令人困惑,但我认为我想要的行为在标题中已经清楚地说明了。谢谢大家知道这些很有用!当我有空的时候,我会试试这个——我最终用纯javascript解决了它。有时在他们放的脚本示例(jQuery)的末尾,我也会感到困惑——我再也找不到示例了,很难搜索“(jQuery)”,但是你知道这是用来做什么的吗?非常感谢。谢谢CSS试图让它以隐藏状态开始。但是,是的,我最终把它直接添加到了div中。由于wordpress插件设置的特殊情况,我无法首先将其包括在内。谢谢
function toggleDiv(){
jQuery('.excerpt').toggle();
}
<script src='jquery/location'></script>
<script src='myscript/location'></script>
(function($){
$('.excerpt').toggle();
})(jQuery)
.hidden{
display:none;
}
$('#toggle').on('click', function(){
$('.excerpt').toggleClass('hidden');
});
<button id="Toggle">Show/Hide Excerpts</button>
[...stuff...]
<div class="excerpt" style="display:none;">
<ul style="margin:0 0 5px 20px;">[excerpt wordlimit=20] </ul></div>
var divs = document.getElementsByTagName('div');
var toggle = function() {
for (var i = 0, l = divs.length; i < l; i++) {
if (divs[i].getAttribute('class') == 'excerpt')
if (divs[i].style.display == 'none') divs[i].style.display = '';
else divs[i].style.display = 'none';
}
}
document.getElementById('Toggle').onclick = toggle;