Javascript jQuery-.removeClass不';行不通
我有一个按钮Javascript jQuery-.removeClass不';行不通,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个按钮test和一个div <div class="subsystem subhide"> <h3 style="text-align: center; font-size: 30px; font-weight: normal;">Electronics</h3> <p>Lorem</p> </div> 我试图使用的jQuery代码是 jQuery('#subs1').on('click', function
test
和一个div
<div class="subsystem subhide">
<h3 style="text-align: center; font-size: 30px; font-weight: normal;">Electronics</h3>
<p>Lorem</p>
</div>
我试图使用的jQuery代码是
jQuery('#subs1').on('click', function(){
jQuery('.subsystem').removeClass('subhide');
});
当点击按钮时,什么都没有发生,这是为什么
提前谢谢 问题在于
jQuery('#subs1')
查找具有该id的元素并绑定到它们。如果元素在绑定时没有id,则不会处理事件
连接到DOM就绪
要解决此问题,请在documentready上用包装代码,这样,只有当dom(文档)就绪时,代码才会执行
在文档“就绪”之前,页面无法安全操作。jQuery会为您检测这种就绪状态。$(document).ready()中包含的代码只有在页面文档对象模型(DOM)准备好让JavaScript代码执行后才会运行
更好的方法
另一方面,如果您的按钮是动态添加的,那么当事件侦听器想要绑定时,它将不在那里,因此代码实际上什么也不做。要解决此问题,请将代码更改为以下内容:
jQuery(document.body).on('click', '#subs1', function() {
jQuery('.subsystem').removeClass('subhide');
});
此事件将附加到始终位于DOM树中的document.body
。现在,当单击主体时,事件将传播到#subs1
,而不管按钮何时连接到DOM
工作片段
以下是一个工作示例:
$(文档).ready(函数(){
jQuery(document.body).on('click','#subs1',function(){
jQuery('.subsystem').removeClass('subside');
});
jQuery(document.body).on('click','#subs2',function(){
jQuery('.subsystem').addClass('subside');
});
});代码>
.subside{
显示:无;
}
解开
隐藏
数码产品
洛勒姆
jQuery('#subs1')。在('click',function()上{
jQuery('.subsystem').removeClass('subside');
});
jQuery('#toggle')。打开('click',function(){
jQuery('.subsystem').toggle('subside');
});代码>
.subside{
显示:无;
}
数码产品
洛勒姆
按钮
切换按钮
试试:
$( document ).ready(function() {
$('#subs1').on('click', function(){
$('body').find('.subhide').removeClass('subhide');
});
});
如果使用chrome,请清除浏览器缓存。在样式表中,将其更改为:
.subsystem.subhide{
显示:无;
}
.subsystem{
显示:任何内容;
}
它应该可以工作我不确定为什么,但这个片段可以工作:
jQuery( document ).ready(function() {
jQuery('#subs1')
.click(function(){
jQuery('body').find('.subsystem').addClass('subhide')})
});
您是否可以检查错误并创建演示?子系统的作用是什么?请添加子系统CSS您是否包括jquery库?工作您的jquery版本是什么。由于1.7I不同意这一点,因此引入了on,对于规范定义的div,默认值为display:block
。不应添加冗余代码。另外,也没有必要增加类的特殊性。subhide
就足够了。“display:anything;”不是有效的CSS。属性“display”没有“anything”选项。仅供参考;)谢谢,但还是不行。如果我将您的代码复制到JSFIDLE中,它会工作,但在我的网站上不会。我知道jQuery可以工作,因为还有其他一些函数可以使用它。“我想我在这件事上运气不好。”“跳伞者”如果你能链接一个片段,也许我能帮上更多的忙。(关于要点或某事)。屏幕上的按钮是否从第一次加载开始?或者它是动态添加的?其实没什么,js代码在工作js代码下面,css代码在工作css代码下面,div在结束标记之前。没有其他包装或附加功能。@Skydiver请尝试我的更新答案,我相信它会解决您的问题。不,仍然不起作用。我真的完全没有想法了,这一定是一些基本的东西,与我猜的代码无关。
jQuery( document ).ready(function() {
jQuery('#subs1')
.click(function(){
jQuery('body').find('.subsystem').addClass('subhide')})
});