我正在尝试使用jquery来切换某些类的显示属性(打开和关闭)。
我正在尝试在图片和下面的文字之间切换,以点击
切换<div class="fab red off">
<img class="community_service_icon" src="http://placehold.it/50x50">
<div class="community_service_text">
Charity Run<br/>
Charity Sale<br/>
Bake Sale<br/>
Photo Exhibition<br/>
</div>
</div>
以下是我的jquery函数:
jQuery(function($) {
$('.fab.red.off').click(function() {
$(this).removeClass( 'off' ).addClass( 'on' );
$(this).children( '.community_service_icon' ).css('display', 'none');
$(this).children( '.community_service_text' ).css('display', 'block');
});
});
jQuery(function($) {
$('.fab.red.on').click(function() {
$(this).removeClass( 'on' );
$(this).addClass( 'off' );
$(this).children( '.community_service_icon' ).css('display', 'block');
$(this).children( '.community_service_text' ).css('display', 'none');
});
});
第一次点击成功隐藏图像并显示文本,它还将类更改为“fab red on ”。然而,当我再次点击fab div时,它似乎运行第一个带有选择器'.fab.red.off'的函数而另一个函数没有被触发。
有什么想法吗?并且非常感谢任何优化此代码的建议。
干杯
答案 0 :(得分:4)
您可以使用.toggle()
简化代码,如果元素可见则隐藏元素,并显示元素是否可用。
jQuery(function($) {
$('.fab.red').click(function() {
$(this).find('.community_service_icon').toggle();
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="fab red">
<img class="community_service_icon" src="http://placehold.it/50x50">
<div class="community_service_text">
Charity Run
<br/>Charity Sale
<br/>Bake Sale
<br/>Photo Exhibition
<br/>
</div>
</div>
&#13;
答案 1 :(得分:1)
$('.fab.red').click(function() {
$(this).toggleClass('off');
});
.off img {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="fab red">
<img class="community_service_icon" src="http://placehold.it/50x50">
<div class="community_service_text">Charity Run
<br/>Charity Sale
<br/>Bake Sale
<br/>Photo Exhibition
<br/>
</div>
</div>
答案 2 :(得分:0)
好吧,你的点击处理程序被绑定了#34;静态地#34;一旦你的页面加载;此时,有一个元素匹配.fab.red.off
选择器,没有匹配.fab.red.on
的元素。更改类时,不会重新绑定事件处理程序。
jQuery .on()
(http://api.jquery.com/on/)可能是您正在寻找的东西。
编辑:注意selector
参数。
答案 3 :(得分:0)
使用.on()
功能,如下所示docs
jQuery(function($) {
$(document).on('click', '.fab.red.off', function() {
$(this).removeClass( 'off' ).addClass( 'on' );
$(this).children( '.community_service_icon' ).css('display', 'none');
$(this).children( '.community_service_text' ).css('display', 'block');
});
});
jQuery(function($) {
$(document).on('click', '.fab.red.on', function() {
$(this).removeClass( 'on' );
$(this).addClass( 'off' );
$(this).children( '.community_service_icon' ).css('display', 'block');
$(this).children( '.community_service_text' ).css('display', 'block');
});
});
<强> Working Fiddle 强>