如何使此代码适用于每次单击
How do I make this code work for each click?
我有h3
块,点击每个块,我就会显示与它相关的部分。它实际上有点像手风琴(隐藏和折叠)。我还为h3
标签提供了一个下拉图标,这意味着当打开块时,h3
应该有一个指向下方的下拉图标,而其他h3
应该有指向右侧的下拉图标。我使用backgroundPosition
来控制这种行为。我使用jQuery可见条件来查看特定块是否可见,然后将其放置图标放在一个背景位置,其余放在另一个位置。它运行良好,但仅适用于第一次单击。第二次点击不起作用;有人能解释一下原因吗?这是我的代码:
if($(this).next().is(':visible')) {
$(this).css({'backgroundPosition':'0px 14px'});
}
else {
$("h3").css({'backgroundPosition':'0px -11px'});
}
更新代码:
$("h3").click(function() {
$(".tabs").hide();
$(this).next().show();
if($(this).next().is(':visible')) {
$(this).css({'backgroundPosition':'0px 14px'});
} else {
$("h3").css({'backgroundPosition':'0px -11px'});
}
})
如果将整个块封装在div中,可能会使遍历变得更容易。
Html:
<div class="drop-block">
<h3>Click this</h3>
<ul>
<li>Drop</li>
<li>it</li>
<li>like</li>
<li>it's</li>
<li>hot</li>
</ul>
</div>
Jquery:
var dropper = $('.drop-block');
$(dropper).find('h3').click(function(){
$(this).toggleClass('active');
$(dropper).find('ul').toggle();
});
示例
我相信您正在寻找实时
所以它将是这样的:
$(element).live('click', function(){
if($(this).next().is(':visible')) {
$(this).css({'backgroundPosition':'0px 14px'});
}
else {
$("h3").css({'backgroundPosition':'0px -11px'});
}
}
不要编辑它们的css,而是将一个css类设置为"open"(或类似的),然后在单击打开/关闭时添加/删除该类。
通过检查类的存在进行调试要比在JS中检查某些东西的css属性容易得多。
最好为每种情况创建一个类名,并有效地处理操作
$('h3').on('click', function(){
if($(this).hasClass('opened')) {
$(this).removeClass('opened');
}
else {
$(this).addClass('opened');
}
}
$(document).on('click', 'h3', function(e) {
$(".tabs").hide('slow');
$(this).css({'backgroundPosition':'0px 14px'});
if(!$(this).next().is(':visible'))
{
$("h3").css({'backgroundPosition':'0px -11px'});
$(this).next().show('slow');
}
});
如果不需要动画,您可以从显示/隐藏中删除"慢速"
下面是一个例子。
听起来您需要将点击事件绑定到h3
元素并切换子元素的可见性:
$(function(){
$("h3").click(function(){
$(this).next(".tabs").toggle();
});
});
示例标记:
<h3>Item 1</h3>
<div class="tabs">
<h4>Option 1</h4>
<h4>Option 2</h4>
</div>
<h3>Item 2</h3>
<div class="tabs">
<h4>Option 1</h4>
<h4>Option 2</h4>
</div>
下面是一个要演示的jsFiddle。
相关文章:
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- 水平滚动不适用于jquery单击
- 通过单击主菜单外部关闭子菜单'不适用于IE,但适用于Firefox&铬
- 单击不适用于新元素
- 单击事件似乎不适用于 IE 中的选择元素
- javascript单选按钮验证,适用于chrome,不适用于IE
- 异步表单w/Iframe Target——OnLoad适用于FF、Chrome、IE9,不适用于;无法在IE7中得到响应
- 自定义右键单击UI上下文菜单(复制、粘贴、剪切)用于整个应用程序(所有网页)跨所有浏览器而非单个网页
- 选项卡更改仅用于单击的元素,而不是所有元素都具有相同的类
- Angularjs 将切换功能仅应用于 ng-repeat 内单击的按钮
- 用于两个功能的Javascript按钮.提交&单击
- 用于单击页面上的按钮的Javascript,每隔几分钟就会加载一次
- JS单击事件不适用于暂停CSS动画
- 用于右键单击<输入>或<文本区域>上的删除的 IE 事件
- 单击另一个用于显示/隐藏图层的按钮时,在Adobe PDF中隐藏/显示按钮的代码是什么
- 动态选择列表上的单击事件仅适用于 FF
- Jquery 单击不适用于动态生成的 id
- 我试过了,但调用成员单击不适用于输入按钮,它与其他按钮非常不同
- 单击/单击不适用于触摸屏
- 我想在单击按钮时从代码隐藏调用多个 javascript 函数.它适用于 3 个 JavaScript 函数,但不超过此